calendar_meeting_user.go 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  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. //listOld, err := roadshow.GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId)
  75. //if err != nil {
  76. // br.Msg = "获取失败!"
  77. // br.ErrMsg = "操作失败-GetRsCalendarMeetingUserListByRsCalendarId!Err:" + err.Error()
  78. // return
  79. //}
  80. //mapUserId := make(map[int]bool)
  81. //for _, v := range listOld {
  82. // mapUserId[v.UserId] = true
  83. //}
  84. var items []*roadshow.RsCalendarMeetingUser
  85. if len(userIds) > 0 {
  86. var userIdsStr []string
  87. for _, v := range userIds {
  88. userIdsStr = append(userIdsStr, strconv.Itoa(v))
  89. }
  90. listUser, err := models.GetWxUserListByUserIdsHaveCompany(strings.Join(userIdsStr, ","))
  91. if err != nil {
  92. br.Msg = "获取用户信息失败!"
  93. br.ErrMsg = "获取用户信息失败-GetWxUserListByUserIdsHaveCompany!Err:" + err.Error()
  94. return
  95. }
  96. for _, v := range listUser {
  97. item := new(roadshow.RsCalendarMeetingUser)
  98. item.RsCalendarId = rsCalendarId
  99. item.UserId = v.UserId
  100. item.Mobile = v.Mobile
  101. item.Email = v.Email
  102. item.CompanyId = v.CompanyId
  103. item.CompanyName = v.CompanyName
  104. item.RealName = v.RealName
  105. item.Position = v.Position
  106. item.AdminId = sysUser.AdminId
  107. item.AdminName = sysUser.RealName
  108. item.RoadShowTheme = req.RoadShowTheme
  109. item.CreateTime = time.Now()
  110. item.ModifyTime = time.Now()
  111. items = append(items, item)
  112. }
  113. }
  114. err = roadshow.MultiAddRsCalendarMeetingUser(items, roadShowTheme, rsCalendarId)
  115. if err != nil {
  116. br.Msg = "操作失败!"
  117. br.ErrMsg = "操作失败-MultiAddRsCalendarMeetingUser!Err:" + err.Error()
  118. return
  119. }
  120. for _, v := range items {
  121. cygxService.RoadShowWxUserRaiLabelRedisAdd(rsCalendarId, v.UserId, v.CreateTime) //添加用户参加路演标签到Redis
  122. }
  123. br.Ret = 200
  124. br.Success = true
  125. br.Msg = "添加成功"
  126. br.IsAddLog = true
  127. }
  128. // @Title 路演活动参会名单列表接口
  129. // @Description 路演活动参会名单列表接口
  130. // @Param RsCalendarId query int true "路演活动id"
  131. // @Success 200 {object} roadshow.CalendarListResp
  132. // @router /rs_calendar_meeting_user/list [get]
  133. func (this *CalendarMeetingUserController) List() {
  134. br := new(models.BaseResponse).Init()
  135. defer func() {
  136. this.Data["json"] = br
  137. this.ServeJSON()
  138. }()
  139. sysUser := this.SysUser
  140. if sysUser == nil {
  141. br.Msg = "请登录"
  142. br.ErrMsg = "请登录,SysUser Is Empty"
  143. br.Ret = 408
  144. return
  145. }
  146. rsCalendarId, _ := this.GetInt("RsCalendarId")
  147. resp := new(roadshow.RsCalendarMeetingUserListResp)
  148. list, err := roadshow.GetRsCalendarMeetingUserListByRsCalendarId(rsCalendarId)
  149. if err != nil {
  150. br.Msg = "获取失败!"
  151. br.ErrMsg = "操作失败-GetRsCalendarMeetingUserListByRsCalendarId!Err:" + err.Error()
  152. return
  153. }
  154. totalGroup, err := roadshow.GetRsCalendarMeetingLabelGroupByRsCalendarId(rsCalendarId)
  155. if err != nil {
  156. br.Msg = "获取信息失败!"
  157. br.ErrMsg = "获取用户信息失败-GetRsCalendarMeetingLabelGroupByRsCalendarId!Err:" + err.Error()
  158. return
  159. }
  160. var lebelDetail []*cygx.RaiServeTagResp
  161. if totalGroup > 0 {
  162. listGroup, err := roadshow.GetRsCalendarMeetingLabelGroupListByRsCalendarId(rsCalendarId)
  163. if err != nil {
  164. br.Msg = "获取信息失败!"
  165. br.ErrMsg = "获取用户信息失败-GetRsCalendarMeetingLabelGroupListByRsCalendarId!Err:" + err.Error()
  166. return
  167. }
  168. var industrialManagementIds []int
  169. var industrialSubjectIds []int
  170. mapindustrialManagementName := make(map[int]string)
  171. mapindustrialSubjectName := make(map[int]string)
  172. mapCelueName := make(map[int]string)
  173. for _, v := range listGroup {
  174. switch v.TagType {
  175. case 1:
  176. industrialManagementIds = append(industrialManagementIds, v.TagId)
  177. case 2:
  178. industrialSubjectIds = append(industrialSubjectIds, v.TagId)
  179. case 3:
  180. mapCelueName[v.TagId] = "策略"
  181. }
  182. }
  183. if len(industrialManagementIds) > 0 {
  184. IndustryList, err := cygx.GetIndustryListByConditionByIds(industrialManagementIds)
  185. if err != nil {
  186. br.Msg = "获取信息失败!"
  187. br.ErrMsg = "获取用户信息失败-GetIndustryListByConditionByIds!Err:" + err.Error()
  188. return
  189. }
  190. for _, v := range IndustryList {
  191. mapindustrialManagementName[v.IndustrialManagementId] = v.IndustryName
  192. }
  193. }
  194. if len(industrialSubjectIds) > 0 {
  195. SubjectList, err := cygx.GetIndustrialSubjectDetailByIds(industrialSubjectIds)
  196. if err != nil {
  197. br.Msg = "获取信息失败!"
  198. br.ErrMsg = "获取用户信息失败-GetIndustryListByConditionByIds!Err:" + err.Error()
  199. return
  200. }
  201. for _, v := range SubjectList {
  202. mapindustrialSubjectName[v.IndustrialSubjectId] = v.SubjectName
  203. }
  204. }
  205. for _, v := range listGroup {
  206. item := new(cygx.RaiServeTagResp)
  207. item.TagType = v.TagType
  208. item.TagId = v.TagId
  209. item.Md5Key = utils.MD5(fmt.Sprintf("K_", v.TagType, "V_", v.TagId))
  210. switch v.TagType {
  211. case 1:
  212. item.TagName = mapindustrialManagementName[v.TagId]
  213. case 2:
  214. item.TagName = mapindustrialSubjectName[v.TagId]
  215. case 3:
  216. item.TagName = mapCelueName[v.TagId]
  217. }
  218. lebelDetail = append(lebelDetail, item)
  219. }
  220. }
  221. if len(list) == 0 {
  222. list = make([]*roadshow.RsCalendarMeetingUserResp, 0)
  223. } else {
  224. for _, v := range list {
  225. resp.RoadShowTheme = v.RoadShowTheme
  226. }
  227. }
  228. if len(lebelDetail) == 0 {
  229. lebelDetail = make([]*cygx.RaiServeTagResp, 0)
  230. }
  231. resp.List = list
  232. resp.ListLebel = lebelDetail
  233. br.Ret = 200
  234. br.Success = true
  235. br.Data = resp
  236. br.Msg = "获取成功"
  237. }
  238. // @Title 路演活动参会删除接口
  239. // @Description 路演活动参会删除接口
  240. // @Param RsCalendarMeetingUserId query int true "参会名单主键ID"
  241. // @Success Ret=200 删除成功
  242. // @router /rs_calendar_meeting_user/delete [post]
  243. func (this *CalendarMeetingUserController) Delete() {
  244. br := new(models.BaseResponse).Init()
  245. defer func() {
  246. this.Data["json"] = br
  247. this.ServeJSON()
  248. }()
  249. sysUser := this.SysUser
  250. if sysUser == nil {
  251. br.Msg = "请登录"
  252. br.ErrMsg = "请登录,SysUser Is Empty"
  253. br.Ret = 408
  254. return
  255. }
  256. var req roadshow.DeleteRsCalendarMeetingUserReq
  257. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  258. if err != nil {
  259. br.Msg = "参数解析异常!"
  260. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  261. return
  262. }
  263. rsCalendarMeetingUserId := req.RsCalendarMeetingUserId
  264. //rsCalendarMeetingUserItem, err := roadshow.GetRsCalendarMeetingUserByRsCalendarMeetingUserId(rsCalendarMeetingUserId)
  265. //if err != nil {
  266. // br.Msg = "获取数据失败!"
  267. // br.ErrMsg = "获取数据失败!GetRsCalendarMeetingUserFirst:" + err.Error()
  268. // return
  269. //}
  270. //err = cygx.DeleteWxUserRaiLabelWithRoadshow(rsCalendarMeetingUserItem.UserId, rsCalendarMeetingUserItem.RsCalendarId) // 路演到会删除后,删除对应的标签
  271. //if err != nil {
  272. // br.Msg = "删除失败!"
  273. // br.ErrMsg = "删除失败-DeleteWxUserRaiLabelWithRoadshow!Err:" + err.Error()
  274. // return
  275. //}
  276. err = roadshow.DeleteRsCalendarMeetingUser(rsCalendarMeetingUserId)
  277. if err != nil {
  278. br.Msg = "删除失败!"
  279. br.ErrMsg = "删除失败-DeleteRsCalendarMeetingUser!Err:" + err.Error()
  280. return
  281. }
  282. br.Ret = 200
  283. br.Success = true
  284. br.Msg = "删除成功"
  285. br.IsAddLog = true
  286. }