yanxuan_special_message.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hongze_web_mfyx/models"
  6. "hongze/hongze_web_mfyx/services"
  7. "hongze/hongze_web_mfyx/utils"
  8. "time"
  9. )
  10. type YanxuanSpecialMessageController struct {
  11. BaseAuthController
  12. }
  13. // @Title 添加留言
  14. // @Description 添加留言接口
  15. // @Param request body models.AddCygxYanxuanSpecialMessageReq true "type json string"
  16. // @Success Ret=200 {object}
  17. // @router /message/add [post]
  18. func (this *YanxuanSpecialMessageController) MessageAdd() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. this.Data["json"] = br
  22. this.ServeJSON()
  23. }()
  24. user := this.User
  25. if user == nil {
  26. br.Msg = "请登录"
  27. br.ErrMsg = "请登录,用户信息为空"
  28. br.Ret = 408
  29. return
  30. }
  31. var req models.AddCygxYanxuanSpecialMessageReq
  32. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  33. if err != nil {
  34. br.Msg = "参数解析异常!"
  35. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  36. return
  37. }
  38. yanxuanSpecialId := req.YanxuanSpecialId
  39. content := req.Content
  40. parentId := req.ParentId
  41. if content == "" {
  42. br.Msg = "请输入留言内容!"
  43. return
  44. }
  45. if yanxuanSpecialId == 0 {
  46. br.Msg = "留言失败!"
  47. br.ErrMsg = "专栏信息不能为空"
  48. return
  49. }
  50. // 研选专栏
  51. yanxuanSpecialBySpeciaDetail, err := models.GetYanxuanSpecialBySpecialId(yanxuanSpecialId)
  52. if err != nil {
  53. br.Msg = "获取信息失败"
  54. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  55. return
  56. }
  57. item := new(models.CygxYanxuanSpecialMessage)
  58. item.UserId = user.UserId
  59. item.Mobile = user.Mobile
  60. item.Email = user.Email
  61. item.CompanyId = user.CompanyId
  62. item.CompanyName = user.CompanyName
  63. item.RealName = user.RealName
  64. item.SellerName, _ = services.GetSellerName(user) // 销售姓名
  65. item.YanxuanSpecialId = yanxuanSpecialId
  66. item.Content = content
  67. item.ParentId = parentId
  68. item.YanxuanSpecialUserId = yanxuanSpecialBySpeciaDetail.UserId
  69. item.SourceTitle = yanxuanSpecialBySpeciaDetail.Title
  70. item.CreateTime = time.Now()
  71. item.ModifyTime = time.Now()
  72. item.RegisterPlatform = utils.REGISTER_PLATFORM
  73. err = models.AddCygxYanxuanSpecialMessage(item)
  74. if err != nil {
  75. br.Msg = "留言失败!"
  76. br.ErrMsg = "留言失败,Err:" + err.Error()
  77. return
  78. }
  79. br.Ret = 200
  80. br.Success = true
  81. br.Msg = "留言成功"
  82. }
  83. // @Title 留言管理列表
  84. // @Description 留言管理列表接口
  85. // @Param PageSize query int true "每页数据条数"
  86. // @Param CurrentIndex query int true "当前页页码,从1开始"
  87. // @Param MessageType query int false "留言类型1:普通留言、2:公开留言"
  88. // @Success 200 {object} models.SpecialListResp
  89. // @router /message/manage/list [get]
  90. func (this *YanxuanSpecialMessageController) MessageManageList() {
  91. br := new(models.BaseResponse).Init()
  92. defer func() {
  93. this.Data["json"] = br
  94. this.ServeJSON()
  95. }()
  96. user := this.User
  97. if user == nil {
  98. br.Msg = "请登录"
  99. br.ErrMsg = "请登录,用户信息为空"
  100. br.Ret = 408
  101. return
  102. }
  103. pageSize, _ := this.GetInt("PageSize")
  104. currentIndex, _ := this.GetInt("CurrentIndex")
  105. messageType, _ := this.GetInt("MessageType", 1)
  106. var startSize int
  107. if pageSize <= 0 {
  108. pageSize = utils.PageSize20
  109. }
  110. if currentIndex <= 0 {
  111. currentIndex = 1
  112. }
  113. startSize = utils.StartIndex(currentIndex, pageSize)
  114. resp := new(models.YanxuanSpecialMessageManageRespListResp)
  115. var condition string
  116. var pars []interface{}
  117. userId := user.UserId
  118. if messageType == 1 {
  119. condition += ` AND status = 0 `
  120. } else {
  121. condition += ` AND status = 1 `
  122. }
  123. condition += ` AND yanxuan_special_user_id = ? `
  124. pars = append(pars, userId)
  125. conditionChildren := condition // 子集留言筛选条件
  126. condition += ` AND parent_id = 0 `
  127. total, err := models.GetCygxYanxuanSpecialMessagerCount(condition, pars)
  128. if err != nil {
  129. br.Msg = "获取失败"
  130. br.ErrMsg = "获取失败, Err:" + err.Error()
  131. return
  132. }
  133. condition += ` ORDER BY message_id DESC `
  134. list, err := models.GetCygxYanxuanSpecialMessageList(condition, pars, startSize, pageSize)
  135. if err != nil {
  136. br.Msg = "获取失败"
  137. br.ErrMsg = "获取失败, Err:" + err.Error()
  138. return
  139. }
  140. if len(list) > 0 {
  141. var messageIds []int
  142. var userIds []int
  143. for _, v := range list {
  144. messageIds = append(messageIds, v.MessageId)
  145. userIds = append(userIds, v.UserId)
  146. }
  147. //用户头像
  148. listUser, err := models.GetWxUserListByUserIdsArr(userIds)
  149. if err != nil {
  150. br.Msg = "获取失败"
  151. br.ErrMsg = "获取失败, Err:" + err.Error()
  152. return
  153. }
  154. mapUserImg := make(map[int]string)
  155. for _, v := range listUser {
  156. if v.Headimgurl != "" {
  157. mapUserImg[v.UserId] = v.Headimgurl
  158. } else {
  159. mapUserImg[v.UserId] = utils.DefaultHeadimgurl
  160. }
  161. }
  162. //获取子集评论
  163. conditionChildren += ` AND parent_id IN (` + utils.GetOrmInReplace(len(messageIds)) + `) ORDER BY message_id ASC `
  164. pars = append(pars, messageIds)
  165. listChild, err := models.GetCygxYanxuanSpecialMessageList(conditionChildren, pars, 0, 999)
  166. if err != nil {
  167. br.Msg = "获取失败"
  168. br.ErrMsg = "获取失败, Err:" + err.Error()
  169. return
  170. }
  171. itemChildMap := make(map[int][]*models.CygxYanxuanSpecialMessageManageChildResp)
  172. for _, v := range listChild {
  173. itemChild := new(models.CygxYanxuanSpecialMessageManageChildResp)
  174. itemChild.MessageId = v.MessageId
  175. itemChild.Content = v.Content
  176. itemChild.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  177. itemChildMap[v.ParentId] = append(itemChildMap[v.ParentId], itemChild)
  178. }
  179. for _, v := range list {
  180. item := new(models.CygxYanxuanSpecialMessageManageResp)
  181. item.MessageId = v.MessageId
  182. item.RealName = v.RealName
  183. item.Headimgurl = mapUserImg[v.UserId]
  184. item.YanxuanSpecialId = v.YanxuanSpecialId
  185. item.Content = v.Content
  186. item.TopTime = v.TopTime
  187. item.SourceTitle = v.SourceTitle
  188. item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  189. if len(itemChildMap[v.MessageId]) > 0 {
  190. item.ChildList = itemChildMap[v.MessageId]
  191. } else {
  192. item.ChildList = make([]*models.CygxYanxuanSpecialMessageManageChildResp, 0)
  193. }
  194. item.CheckIds = make([]int, 0)
  195. resp.List = append(resp.List, item)
  196. }
  197. } else {
  198. resp.List = make([]*models.CygxYanxuanSpecialMessageManageResp, 0)
  199. }
  200. page := paging.GetPaging(currentIndex, pageSize, total)
  201. resp.Paging = page
  202. br.Data = resp
  203. br.Ret = 200
  204. br.Success = true
  205. br.Msg = "获取成功"
  206. }
  207. // @Title 删除留言
  208. // @Description 删除留言接口
  209. // @Param request body models.DeleteCygxYanxuanSpecialMessageReq true "type json string"
  210. // @Success Ret=200 {object}
  211. // @router /message/delete [post]
  212. func (this *YanxuanSpecialMessageController) MessageDelete() {
  213. br := new(models.BaseResponse).Init()
  214. defer func() {
  215. this.Data["json"] = br
  216. this.ServeJSON()
  217. }()
  218. user := this.User
  219. if user == nil {
  220. br.Msg = "请登录"
  221. br.ErrMsg = "请登录,用户信息为空"
  222. br.Ret = 408
  223. return
  224. }
  225. var req models.DeleteCygxYanxuanSpecialMessageReq
  226. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  227. if err != nil {
  228. br.Msg = "参数解析异常!"
  229. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  230. return
  231. }
  232. messageId := req.MessageId
  233. err = models.DeleteCygxYanxuanSpecialMessage(messageId)
  234. if err != nil {
  235. br.Msg = "删除失败!"
  236. br.ErrMsg = "删除失败,Err:" + err.Error()
  237. return
  238. }
  239. br.Ret = 200
  240. br.Success = true
  241. br.Msg = "删除成功"
  242. }
  243. // @Title 置顶/取消置顶留言
  244. // @Description 置顶/取消置顶留言接口
  245. // @Param request body models.TopCygxYanxuanSpecialMessageReq true "type json string"
  246. // @Success Ret=200 {object}
  247. // @router /message/top [post]
  248. func (this *YanxuanSpecialMessageController) MessageTop() {
  249. br := new(models.BaseResponse).Init()
  250. defer func() {
  251. this.Data["json"] = br
  252. this.ServeJSON()
  253. }()
  254. user := this.User
  255. if user == nil {
  256. br.Msg = "请登录"
  257. br.ErrMsg = "请登录,用户信息为空"
  258. br.Ret = 408
  259. return
  260. }
  261. var req models.TopCygxYanxuanSpecialMessageReq
  262. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  263. if err != nil {
  264. br.Msg = "参数解析异常!"
  265. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  266. return
  267. }
  268. messageId := req.MessageId
  269. doType := req.DoType
  270. var topTime int
  271. if doType == 1 {
  272. topTime = int(time.Now().Unix())
  273. }
  274. err = models.UpdateCygxYanxuanSpecialMessageTopTime(topTime, messageId)
  275. if err != nil {
  276. br.Msg = "操作失败!"
  277. br.ErrMsg = "操作失败,Err:" + err.Error()
  278. return
  279. }
  280. br.Ret = 200
  281. br.Success = true
  282. br.Msg = "操作成功"
  283. }
  284. // @Title 公开/取消公开留言
  285. // @Description 公开/取消公开留言接口
  286. // @Param request body models.TopCygxYanxuanSpecialMessageReq true "type json string"
  287. // @Success Ret=200 {object}
  288. // @router /message/public [post]
  289. func (this *YanxuanSpecialMessageController) MessagePublic() {
  290. br := new(models.BaseResponse).Init()
  291. defer func() {
  292. this.Data["json"] = br
  293. this.ServeJSON()
  294. }()
  295. user := this.User
  296. if user == nil {
  297. br.Msg = "请登录"
  298. br.ErrMsg = "请登录,用户信息为空"
  299. br.Ret = 408
  300. return
  301. }
  302. var req models.PubliceCygxYanxuanSpecialMessageReq
  303. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  304. if err != nil {
  305. br.Msg = "参数解析异常!"
  306. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  307. return
  308. }
  309. messageIds := req.MessageIds
  310. doType := req.DoType
  311. var status int
  312. var publicTime string
  313. if doType == 1 {
  314. status = 1
  315. publicTime = time.Now().Format(utils.FormatDateTime)
  316. }
  317. err = models.UpdateCygxYanxuanSpecialMessageStatus(status, publicTime, messageIds)
  318. if err != nil {
  319. br.Msg = "操作失败!"
  320. br.ErrMsg = "操作失败,Err:" + err.Error()
  321. return
  322. }
  323. br.Ret = 200
  324. br.Success = true
  325. br.Msg = "操作成功"
  326. }
  327. // @Title 点赞/取消点赞
  328. // @Description 点赞/取消点赞接口
  329. // @Param request body models.TopCygxYanxuanSpecialMessageReq true "type json string"
  330. // @Success Ret=200 {object}
  331. // @router /message/like [post]
  332. func (this *YanxuanSpecialMessageController) MessageLike() {
  333. br := new(models.BaseResponse).Init()
  334. defer func() {
  335. this.Data["json"] = br
  336. this.ServeJSON()
  337. }()
  338. user := this.User
  339. if user == nil {
  340. br.Msg = "请登录"
  341. br.ErrMsg = "请登录,用户信息为空"
  342. br.Ret = 408
  343. return
  344. }
  345. var req models.TopCygxYanxuanSpecialMessageReq
  346. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  347. if err != nil {
  348. br.Msg = "参数解析异常!"
  349. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  350. return
  351. }
  352. messageId := req.MessageId
  353. doType := req.DoType
  354. userId := user.UserId
  355. total, err := models.GetCygxYanxuanSpecialMessageLikeCountByUidMid(userId, messageId)
  356. if err != nil {
  357. br.Msg = "操作失败!"
  358. br.ErrMsg = "操作失败,Err:" + err.Error()
  359. return
  360. }
  361. if doType == 1 {
  362. if total == 0 {
  363. item := new(models.CygxYanxuanSpecialMessageLike)
  364. item.UserId = userId
  365. item.Mobile = user.Mobile
  366. item.Email = user.Email
  367. item.CompanyId = user.CompanyId
  368. item.CompanyName = user.CompanyName
  369. item.RealName = user.RealName
  370. item.MessageId = messageId
  371. item.CreateTime = time.Now()
  372. item.ModifyTime = time.Now()
  373. item.RegisterPlatform = utils.REGISTER_PLATFORM
  374. err = models.AddCygxYanxuanSpecialMessageLike(item)
  375. if err != nil {
  376. br.Msg = "点赞失败!"
  377. br.ErrMsg = "点赞失败,Err:" + err.Error()
  378. return
  379. }
  380. }
  381. } else {
  382. if total > 0 {
  383. err = models.DeleteCygxYanxuanSpecialMessageLike(userId, messageId)
  384. if err != nil {
  385. br.Msg = "点赞失败!"
  386. br.ErrMsg = "点赞失败,Err:" + err.Error()
  387. return
  388. }
  389. }
  390. }
  391. br.Ret = 200
  392. br.Success = true
  393. br.Msg = "操作成功"
  394. }
  395. // @Title 专栏文章留言列表
  396. // @Description 专栏文章留言列表接口
  397. // @Param PageSize query int true "每页数据条数"
  398. // @Param CurrentIndex query int true "当前页页码,从1开始"
  399. // @Param YanxuanSpecialId query int false "研选专栏文章ID"
  400. // @Success 200 {object} models.SpecialListResp
  401. // @router /message/special/list [get]
  402. func (this *YanxuanSpecialMessageController) MessageSpecialList() {
  403. br := new(models.BaseResponse).Init()
  404. defer func() {
  405. this.Data["json"] = br
  406. this.ServeJSON()
  407. }()
  408. user := this.User
  409. if user == nil {
  410. br.Msg = "请登录"
  411. br.ErrMsg = "请登录,用户信息为空"
  412. br.Ret = 408
  413. return
  414. }
  415. pageSize, _ := this.GetInt("PageSize")
  416. currentIndex, _ := this.GetInt("CurrentIndex")
  417. yanxuanSpecialId, _ := this.GetInt("YanxuanSpecialId")
  418. var startSize int
  419. if pageSize <= 0 {
  420. pageSize = utils.PageSize20
  421. }
  422. if currentIndex <= 0 {
  423. currentIndex = 1
  424. }
  425. startSize = utils.StartIndex(currentIndex, pageSize)
  426. userId := user.UserId
  427. resp := new(models.YanxuanSpecialMessageManageRespListResp)
  428. publiccTotal, err := models.GetCygxYanxuanSpecialMessagerPublicCount(yanxuanSpecialId)
  429. if err != nil {
  430. br.Msg = "获取失败"
  431. br.ErrMsg = "获取失败, Err:" + err.Error()
  432. return
  433. }
  434. resp.PublicMessageTotal = publiccTotal
  435. var condition string
  436. var pars []interface{}
  437. var conditionMyself string
  438. var parsMyself []interface{}
  439. conditionMyself += ` AND status = 0 AND parent_id = 0 AND user_id = ? `
  440. parsMyself = append(parsMyself, userId)
  441. var listMyself []*models.CygxYanxuanSpecialMessage
  442. if currentIndex == 1 {
  443. //获取自己未公开的留言
  444. listMyself, err = models.GetCygxYanxuanSpecialMessageList(conditionMyself, parsMyself, 0, 999)
  445. if err != nil && err.Error() != utils.ErrNoRow() {
  446. br.Msg = "获取失败"
  447. br.ErrMsg = "获取失败, Err:" + err.Error()
  448. return
  449. }
  450. }
  451. condition += ` AND status = 1 `
  452. condition += ` AND yanxuan_special_id = ? `
  453. pars = append(pars, yanxuanSpecialId)
  454. conditionChildren := condition // 子集留言筛选条件
  455. condition += ` AND parent_id = 0 `
  456. total, err := models.GetCygxYanxuanSpecialMessagerCount(condition, pars)
  457. if err != nil {
  458. br.Msg = "获取失败"
  459. br.ErrMsg = "获取失败, Err:" + err.Error()
  460. return
  461. }
  462. condition += ` ORDER BY message_id DESC `
  463. list, err := models.GetCygxYanxuanSpecialMessageList(condition, pars, startSize, pageSize)
  464. if err != nil {
  465. br.Msg = "获取失败"
  466. br.ErrMsg = "获取失败, Err:" + err.Error()
  467. return
  468. }
  469. for _, v := range list {
  470. listMyself = append(listMyself, v)
  471. }
  472. if len(listMyself) > 0 {
  473. var messageIds []int
  474. var messageIdsAll []int // 所有的留言消息
  475. var userIds []int
  476. for _, v := range list {
  477. messageIds = append(messageIds, v.MessageId)
  478. }
  479. for _, v := range listMyself {
  480. userIds = append(userIds, v.UserId)
  481. }
  482. itemChildMap := make(map[int][]*models.CygxYanxuanSpecialMessageManageChildResp)
  483. if len(messageIds) > 0 {
  484. //获取子集评论
  485. conditionChildren += ` AND parent_id IN (` + utils.GetOrmInReplace(len(messageIds)) + `) ORDER BY message_id ASC `
  486. pars = append(pars, messageIds)
  487. listChild, err := models.GetCygxYanxuanSpecialMessageList(conditionChildren, pars, 0, 999)
  488. if err != nil {
  489. br.Msg = "获取失败"
  490. br.ErrMsg = "获取失败, Err:" + err.Error()
  491. return
  492. }
  493. for _, v := range listChild {
  494. userIds = append(userIds, v.UserId)
  495. messageIdsAll = append(messageIdsAll, v.MessageId)
  496. itemChild := new(models.CygxYanxuanSpecialMessageManageChildResp)
  497. itemChild.UserId = v.UserId
  498. itemChild.MessageId = v.MessageId
  499. itemChild.Content = v.Content
  500. itemChild.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  501. itemChildMap[v.ParentId] = append(itemChildMap[v.ParentId], itemChild)
  502. }
  503. }
  504. likeMap := services.GetYanxuanSpecialMessageLikeMap(userId)
  505. //用户头像
  506. listUser, err := models.GetWxUserListByUserIdsArr(userIds)
  507. if err != nil {
  508. br.Msg = "获取失败"
  509. br.ErrMsg = "获取失败, Err:" + err.Error()
  510. return
  511. }
  512. mapUserImg := make(map[int]string)
  513. for _, v := range listUser {
  514. if v.Headimgurl != "" {
  515. mapUserImg[v.UserId] = v.Headimgurl
  516. } else {
  517. mapUserImg[v.UserId] = utils.DefaultHeadimgurl
  518. }
  519. }
  520. for _, v := range listMyself {
  521. item := new(models.CygxYanxuanSpecialMessageManageResp)
  522. item.MessageId = v.MessageId
  523. item.RealName = v.RealName
  524. item.Headimgurl = mapUserImg[v.UserId]
  525. item.YanxuanSpecialId = v.YanxuanSpecialId
  526. item.Content = v.Content
  527. item.TopTime = v.TopTime
  528. item.SourceTitle = v.SourceTitle
  529. item.LikeCount = v.LikeCount
  530. item.IsLikeCount = likeMap[v.MessageId]
  531. if v.UserId == userId {
  532. item.IsMySelf = true
  533. }
  534. item.CreateTime = v.CreateTime.Format(utils.FormatDateTime)
  535. if len(itemChildMap[v.MessageId]) > 0 {
  536. for _, vm := range itemChildMap[v.MessageId] {
  537. vm.IsLikeCount = likeMap[vm.MessageId]
  538. vm.Headimgurl = mapUserImg[vm.UserId]
  539. }
  540. item.ChildList = itemChildMap[v.MessageId]
  541. } else {
  542. item.ChildList = make([]*models.CygxYanxuanSpecialMessageManageChildResp, 0)
  543. }
  544. item.CheckIds = make([]int, 0)
  545. resp.List = append(resp.List, item)
  546. }
  547. } else {
  548. resp.List = make([]*models.CygxYanxuanSpecialMessageManageResp, 0)
  549. }
  550. page := paging.GetPaging(currentIndex, pageSize, total)
  551. resp.Paging = page
  552. br.Data = resp
  553. br.Ret = 200
  554. br.Success = true
  555. br.Msg = "获取成功"
  556. }