wechatimt.go 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package wechatimg
  2. import (
  3. "mime/multipart"
  4. "strconv"
  5. "time"
  6. "unsafe"
  7. "wechat-conf/controllers"
  8. "wechat-conf/models/model"
  9. "wechat-conf/service/sysuser"
  10. "wechat-conf/service/wechatimg"
  11. "wechat-conf/utils"
  12. )
  13. // WechatImgController 信息
  14. type WechatImgController struct {
  15. dao *wechatimg.WechatImgServ
  16. sdao *sysuser.SysuserServ
  17. controllers.BaseController
  18. }
  19. // Constructor 初始化 Controller
  20. // @Title Constructor
  21. // @Description 初始化 Controller, 系统自动调用
  22. func (c *WechatImgController) Constructor() {
  23. c.dao = wechatimg.NewWechatImgServ(c.Context)
  24. c.sdao = sysuser.NewSysuserServ(c.Context)
  25. }
  26. func (c *WechatImgController) GetWechatImgList() {
  27. user := c.Context.Get("user").(*model.SysUser)
  28. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  29. if err != nil {
  30. c.ResponseError(err)
  31. }
  32. client, err := utils.Component.GetWxClient(appId)
  33. if err != nil {
  34. c.ResponseError(err)
  35. }
  36. page, _ := c.GetInt("page")
  37. pageSize, _ := c.GetInt("pagesize")
  38. count, _ := c.GetInt("count")
  39. offset := page * (pageSize - 1)
  40. var data map[string]string
  41. data["offset"] = strconv.Itoa(offset)
  42. data["type"] = "image"
  43. data["count"] = strconv.Itoa(count)
  44. wechatImg, err := client.GetMaterialList(data)
  45. if err != nil {
  46. c.ResponseError(err)
  47. }
  48. c.ResponseJSON(wechatImg)
  49. }
  50. func (c *WechatImgController) SyncWechatImg() {
  51. user := c.Context.Get("user").(*model.SysUser)
  52. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  53. if err != nil {
  54. c.ResponseError(err)
  55. }
  56. client, err := utils.Component.GetWxClient(appId)
  57. if err != nil {
  58. c.ResponseError(err)
  59. }
  60. for i := 0; i < 200; i++ {
  61. var data map[string]string
  62. offset := i * 20
  63. data["offset"] = strconv.Itoa(offset)
  64. data["type"] = "image"
  65. data["count"] = strconv.Itoa(20)
  66. wechatImg, err := client.GetMaterialList(data)
  67. if err != nil {
  68. c.ResponseError(err)
  69. }
  70. if wechatImg == nil {
  71. break
  72. }
  73. err = c.dao.SyncWechatImg(wechatImg, user.OrgId)
  74. if err != nil {
  75. c.ResponseError(err)
  76. }
  77. }
  78. c.ResponseJSON("同步成功")
  79. }
  80. func (c *WechatImgController) AddNewImg() {
  81. user := c.Context.Get("user").(*model.SysUser)
  82. fromFront := c.GetString("fromFront")
  83. req := c.Ctx.Request
  84. file, fh, err := req.FormFile(fromFront)
  85. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  86. if err != nil {
  87. c.ResponseError(err)
  88. }
  89. client, err := utils.Component.GetWxClient(appId)
  90. if err != nil {
  91. c.ResponseError(err)
  92. }
  93. token := utils.Component.GetToken()
  94. type wechatMatrial struct {
  95. access_token string
  96. media multipart.File
  97. }
  98. var media = wechatMatrial{
  99. access_token: token,
  100. media: file,
  101. }
  102. byteDate := *(*[]byte)(unsafe.Pointer(&media))
  103. data, err := client.AddMaterial(byteDate, "image")
  104. var img = model.TaWechatImg{
  105. MediaId: data["media_id"].(string),
  106. Url: data["url"].(string),
  107. Name: fh.Filename,
  108. UpdateTime: time.Now(),
  109. }
  110. err = c.dao.AddWechatImg(img)
  111. if err != nil {
  112. c.ResponseError(err)
  113. }
  114. c.ResponseJSON("上传成功")
  115. }