yanxuan_special_message.go 17 KB

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