wechatimt.go 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  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. offset := page * (pageSize - 1)
  39. var data map[string]string
  40. data["offset"] = strconv.Itoa(offset)
  41. data["type"] = "image"
  42. data["count"] = strconv.Itoa(pageSize)
  43. wechatImg, err := client.GetMaterialList(data)
  44. if err != nil {
  45. c.ResponseError(err)
  46. }
  47. c.ResponseJSON(wechatImg)
  48. }
  49. func (c *WechatImgController) SyncWechatImg() {
  50. user := c.Context.Get("user").(*model.SysUser)
  51. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  52. if err != nil {
  53. c.ResponseError(err)
  54. }
  55. client, err := utils.Component.GetWxClient(appId)
  56. if err != nil {
  57. c.ResponseError(err)
  58. }
  59. for i := 0; i < 200; i++ {
  60. var data map[string]string
  61. offset := i * 20
  62. data["offset"] = strconv.Itoa(offset)
  63. data["type"] = "image"
  64. data["count"] = strconv.Itoa(20)
  65. wechatImg, err := client.GetMaterialList(data)
  66. if err != nil {
  67. c.ResponseError(err)
  68. }
  69. if wechatImg == nil {
  70. break
  71. }
  72. err = c.dao.SyncWechatImg(wechatImg, user.OrgId)
  73. if err != nil {
  74. c.ResponseError(err)
  75. }
  76. }
  77. c.ResponseJSON("同步成功")
  78. }
  79. func (c *WechatImgController) AddNewImg() {
  80. user := c.Context.Get("user").(*model.SysUser)
  81. fromFront := c.GetString("fromFront")
  82. req := c.Ctx.Request
  83. file, fh, err := req.FormFile(fromFront)
  84. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  85. if err != nil {
  86. c.ResponseError(err)
  87. }
  88. client, err := utils.Component.GetWxClient(appId)
  89. if err != nil {
  90. c.ResponseError(err)
  91. }
  92. token := utils.Component.GetToken()
  93. type wechatMatrial struct {
  94. access_token string
  95. media multipart.File
  96. }
  97. var media = wechatMatrial{
  98. access_token: token,
  99. media: file,
  100. }
  101. byteDate := *(*[]byte)(unsafe.Pointer(&media))
  102. data, err := client.AddMaterial(byteDate, "image")
  103. var img = model.TaWechatImg{
  104. MediaId: data["media_id"].(string),
  105. Url: data["url"].(string),
  106. Name: fh.Filename,
  107. UpdateTime: time.Now(),
  108. }
  109. err = c.dao.AddWechatImg(img)
  110. if err != nil {
  111. c.ResponseError(err)
  112. }
  113. c.ResponseJSON("上传成功")
  114. }
  115. func (c *WechatImgController) DeleteImg() {
  116. mediaId := c.GetString("mediaId")
  117. err := c.dao.DeleteImg(mediaId)
  118. if err != nil {
  119. c.ResponseError(err)
  120. }
  121. c.ResponseJSON("删除成功")
  122. }