1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package wechatmenu
  2. import (
  3. "strings"
  4. "wechat-conf/controllers"
  5. "wechat-conf/models/model"
  6. "wechat-conf/service/sysuser"
  7. "wechat-conf/service/wechatmenu"
  8. "wechat-conf/utils"
  9. "github.com/astaxie/beego"
  10. )
  11. // MenuController 信息
  12. type MenuController struct {
  13. dao *wechatmenu.WechatmenuServ
  14. sdao *sysuser.SysuserServ
  15. controllers.BaseController
  16. }
  17. // Constructor 初始化 Controller
  18. // @Title Constructor
  19. // @Description 初始化 Controller, 系统自动调用
  20. func (c *MenuController) Constructor() {
  21. c.dao = wechatmenu.NewWechatmenuServ(c.Context)
  22. c.sdao = sysuser.NewSysuserServ(c.Context)
  23. }
  24. func (c *MenuController) GetMenuList() {
  25. user := c.Context.Get("user").(*model.SysUser)
  26. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  27. if err != nil {
  28. c.ResponseError(err)
  29. }
  30. beego.Error(appId)
  31. client, err := utils.Component.GetWxClient(appId)
  32. if err != nil {
  33. c.ResponseError(err)
  34. }
  35. menu, err := client.GetMenu()
  36. var code string = err.Error()
  37. if err != nil {
  38. if strings.Contains(code, "46003") {
  39. c.ResponseJSON(menu)
  40. } else {
  41. c.ResponseError(err)
  42. }
  43. }
  44. c.ResponseJSON(menu)
  45. }
  46. type Wehchatmenu struct {
  47. WechatJson string
  48. }
  49. func (c *MenuController) RefreshMenu() {
  50. user := c.Context.Get("user").(*model.SysUser)
  51. wechatJson := Wehchatmenu{}
  52. if err := c.ParseForm(&wechatJson); err != nil {
  53. c.ResponseError(err)
  54. }
  55. str := wechatJson.WechatJson
  56. var data []byte = []byte(str)
  57. err := c.dao.UpdateWechatMenu(str, user.OrgId)
  58. if err != nil {
  59. c.ResponseError(err)
  60. }
  61. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  62. if err != nil {
  63. c.ResponseError(err)
  64. }
  65. client, err := utils.Component.GetWxClient(appId)
  66. if err != nil {
  67. c.ResponseError(err)
  68. }
  69. err = client.RefreshMenu(data)
  70. if err != nil {
  71. c.ResponseError(err)
  72. }
  73. }