h5.go 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package controllers
  2. import (
  3. "errors"
  4. "h5-2019/models"
  5. "h5-2019/models/model"
  6. "h5-2019/utils"
  7. "net/http"
  8. "github.com/astaxie/beego"
  9. )
  10. // H5Controller 基础controller
  11. type H5Controller struct {
  12. dao *models.H5Model
  13. BaseController
  14. }
  15. // Constructor 初始化
  16. func (c *H5Controller) Constructor() {
  17. c.dao = new(models.H5Model)
  18. }
  19. // GetCustomer 获取用户及分享信息
  20. func (c *H5Controller) GetCustomer() {
  21. code := c.GetString("code")
  22. link := c.GetString("link")
  23. // 已经存在的用户直接从数据库拿
  24. userID := 0
  25. userSesn := c.GetSession(SESSION_USER)
  26. if userSesn != nil {
  27. userID, _ = userSesn.(int)
  28. }
  29. var err error
  30. user := new(model.TaCustomer)
  31. if userID > 0 {
  32. user, err = c.dao.GetCustomer(userID)
  33. if err != nil {
  34. beego.Error("获取用户信息失败:", err.Error())
  35. c.ResponseJson(errors.New("获取用户信息失败"), http.StatusInternalServerError)
  36. }
  37. } else {
  38. // 不存在的用户,则保存入库
  39. if res, err := utils.GetUserInfo(code); err != nil {
  40. beego.Error("获取微信用户失败:", err.Error())
  41. c.ResponseJson(errors.New("获取微信用户失败"), http.StatusInternalServerError)
  42. } else if user, err = c.dao.SaveCustomer(res.(map[string]interface{})); err != nil {
  43. beego.Error("校验微信用户失败:", err.Error())
  44. c.ResponseJson(errors.New("校验微信用户失败"), http.StatusInternalServerError)
  45. }
  46. }
  47. // 获取分享 ticket
  48. res, err := utils.GetJSTicket(link)
  49. if err != nil {
  50. c.ResponseJson(errors.New("微信分享设置校验失败"), http.StatusInternalServerError)
  51. }
  52. c.SetSession(SESSION_USER, user.Id)
  53. c.ResponseJson(map[string]interface{}{
  54. "user": user,
  55. "share": res,
  56. })
  57. }
  58. // PutShare 更新分享记录
  59. func (c *H5Controller) PutShare() {
  60. userSesn := c.GetSession(SESSION_USER)
  61. if userSesn == nil {
  62. c.ResponseJson(errors.New("记录分享失败, 请重新获取用户信息"), http.StatusUnauthorized)
  63. }
  64. userID, _ := userSesn.(int)
  65. if userID == 0 {
  66. c.ResponseJson(errors.New("未知错误, 请重新获取用户信息"), http.StatusUnauthorized)
  67. }
  68. if err := c.dao.SharePage(userID); err != nil {
  69. beego.Error("记录分享失败:", err.Error())
  70. c.ResponseJson(errors.New("记录分享失败"), http.StatusInternalServerError)
  71. }
  72. c.ResponseJson("ok")
  73. }
  74. // GetTotalShare 获取分享总数
  75. func (c *H5Controller) GetTotalShare() {
  76. total, err := c.dao.TotalShareNum()
  77. if err != nil {
  78. beego.Error("获取分享总数失败:", err.Error())
  79. c.ResponseJson(errors.New("获取分享总数失败"), http.StatusInternalServerError)
  80. }
  81. custnum, err := c.dao.TotalCustomer()
  82. if err != nil {
  83. beego.Error("获取人数失败:", err.Error())
  84. c.ResponseJson(errors.New("获取人数失败"), http.StatusInternalServerError)
  85. }
  86. c.ResponseJson(map[string]interface{}{
  87. "total": total,
  88. "custnum": custnum,
  89. })
  90. }