wechatimt.go 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package wechatimg
  2. import (
  3. "fmt"
  4. "io"
  5. "os"
  6. "strconv"
  7. "time"
  8. "wechat-conf/controllers"
  9. "wechat-conf/models/model"
  10. "wechat-conf/service/sysuser"
  11. "wechat-conf/service/wechatimg"
  12. "wechat-conf/utils"
  13. "github.com/astaxie/beego"
  14. )
  15. // WechatImgController 信息
  16. type WechatImgController struct {
  17. dao *wechatimg.WechatImgServ
  18. sdao *sysuser.SysuserServ
  19. controllers.BaseController
  20. }
  21. // Constructor 初始化 Controller
  22. // @Title Constructor
  23. // @Description 初始化 Controller, 系统自动调用
  24. func (c *WechatImgController) Constructor() {
  25. c.dao = wechatimg.NewWechatImgServ(c.Context)
  26. c.sdao = sysuser.NewSysuserServ(c.Context)
  27. }
  28. func (c *WechatImgController) GetWechatImgCount() {
  29. user := c.Context.Get("user").(*model.SysUser)
  30. appid, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  31. if err != nil {
  32. c.ResponseError(err)
  33. }
  34. // appid := c.GetString(":appid")
  35. wxclient, err := utils.Component.GetWxClient(appid)
  36. if err != nil {
  37. utils.LogError("获取微信信息失败: " + err.Error())
  38. c.ResponseError(err)
  39. }
  40. count, err := wxclient.GetMaterialCount()
  41. if err != nil {
  42. utils.LogError("获取微信详情失败: " + err.Error())
  43. c.ResponseError(err)
  44. }
  45. matype := c.GetString(":type")
  46. c.ResponseJSON(count[matype+"_count"])
  47. }
  48. func (c *WechatImgController) GetWechatImgList() {
  49. user := c.Context.Get("user").(*model.SysUser)
  50. appid, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  51. if err != nil {
  52. c.ResponseError(err)
  53. }
  54. // appid := c.GetString(":appid")
  55. wxclient, err := utils.Component.GetWxClient(appid)
  56. if err != nil {
  57. utils.LogError("获取微信信息失败: " + err.Error())
  58. c.ResponseError(err)
  59. }
  60. var data = map[string]string{}
  61. data["offset"] = "0"
  62. data["type"] = c.GetString(":type")
  63. data["count"] = "10"
  64. wechatImgs, err := wxclient.GetMaterialList(data)
  65. if err != nil {
  66. utils.LogError("获取微信详情失败: " + err.Error())
  67. c.ResponseError(err)
  68. }
  69. c.ResponseJSON(wechatImgs)
  70. }
  71. func (c *WechatImgController) SyncWechatImg() {
  72. user := c.Context.Get("user").(*model.SysUser)
  73. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  74. if err != nil {
  75. c.ResponseError(err)
  76. }
  77. // appId := c.GetString(":appid")
  78. client, err := utils.Component.GetWxClient(appId)
  79. if err != nil {
  80. c.ResponseError(err)
  81. }
  82. count, err := client.GetMaterialCount()
  83. if err != nil {
  84. c.ResponseError(err)
  85. }
  86. imgcount := count["image_count"].(float64)
  87. page := int(imgcount)/20 + 1
  88. for i := 0; i < page; i++ {
  89. var data = map[string]string{}
  90. offset := i * 20
  91. data["offset"] = strconv.Itoa(offset)
  92. data["type"] = "image"
  93. data["count"] = strconv.Itoa(20)
  94. wechatImg, err := client.GetMaterialList(data)
  95. if err != nil {
  96. c.ResponseError(err)
  97. }
  98. if wechatImg == nil {
  99. break
  100. }
  101. err = c.dao.SyncWechatImg(wechatImg, user.OrgId)
  102. if err != nil {
  103. c.ResponseError(err)
  104. }
  105. }
  106. c.ResponseJSON("同步成功")
  107. }
  108. func (c *WechatImgController) AddNewImg() {
  109. file, head, err := c.Ctx.Request.FormFile("media")
  110. if err != nil {
  111. beego.Error(err)
  112. c.ResponseError(err)
  113. }
  114. defer file.Close()
  115. imgurl := "./upload/" + head.Filename
  116. //创建文件
  117. fW, err := os.Create(imgurl)
  118. if err != nil {
  119. fmt.Println("文件创建失败")
  120. return
  121. }
  122. defer fW.Close()
  123. _, err = io.Copy(fW, file)
  124. if err != nil {
  125. fmt.Println("文件保存失败")
  126. return
  127. }
  128. user := c.Context.Get("user").(*model.SysUser)
  129. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  130. if err != nil {
  131. c.ResponseError(err)
  132. }
  133. client, err := utils.Component.GetWxClient(appId)
  134. if err != nil {
  135. c.ResponseError(err)
  136. }
  137. id, err := UploaImage(client.GetToken(), imgurl)
  138. var img = model.TaWechatImg{
  139. MediaId: id,
  140. Url: beego.AppConfig.String("host") + head.Filename,
  141. Name: head.Filename,
  142. UpdateTime: time.Now(),
  143. OrgId: user.OrgId,
  144. }
  145. err = c.dao.AddWechatImg(img)
  146. if err != nil {
  147. c.ResponseError(err)
  148. }
  149. c.ResponseJSON("上传成功")
  150. }
  151. func (c *WechatImgController) DeleteImg() {
  152. user := c.Context.Get("user").(*model.SysUser)
  153. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  154. if err != nil {
  155. c.ResponseError(err)
  156. }
  157. // appId := c.GetString(":appid")
  158. client, err := utils.Component.GetWxClient(appId)
  159. if err != nil {
  160. c.ResponseError(err)
  161. }
  162. mediaId := c.GetString(":mediaId")
  163. err = c.dao.DeleteImg(mediaId)
  164. if err != nil {
  165. c.ResponseError(err)
  166. }
  167. _, err = client.DelMaterial(mediaId)
  168. if err != nil {
  169. c.ResponseError(err)
  170. }
  171. c.ResponseJSON("删除成功")
  172. }