wechatimt.go 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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. wxclient, err := utils.Component.GetWxClient(appid)
  35. if err != nil {
  36. utils.LogError("获取微信信息失败: " + err.Error())
  37. c.ResponseError(err)
  38. }
  39. count, err := wxclient.GetMaterialCount()
  40. if err != nil {
  41. utils.LogError("获取微信详情失败: " + err.Error())
  42. c.ResponseError(err)
  43. }
  44. matype := c.GetString(":type")
  45. c.ResponseJSON(count[matype+"_count"])
  46. }
  47. // func (c *WechatImgController) GetWechatImgList() {
  48. // user := c.Context.Get("user").(*model.SysUser)
  49. // appid, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  50. // if err != nil {
  51. // c.ResponseError(err)
  52. // }
  53. // // appid := c.GetString(":appid")
  54. // wxclient, err := utils.Component.GetWxClient(appid)
  55. // if err != nil {
  56. // utils.LogError("获取微信信息失败: " + err.Error())
  57. // c.ResponseError(err)
  58. // }
  59. // // total, err := c.dao.GetWechatImgCount()
  60. // // if err != nil {
  61. // // utils.LogError("获取微信信息失败: " + err.Error())
  62. // // c.ResponseError(err)
  63. // // }
  64. // var data = map[string]string{}
  65. // data["offset"] = "0"
  66. // data["type"] = c.GetString(":type")
  67. // data["count"] = "10"
  68. // wechatImgs, err := wxclient.GetMaterialList(data)
  69. // if err != nil {
  70. // utils.LogError("获取微信详情失败: " + err.Error())
  71. // c.ResponseError(err)
  72. // }
  73. // c.ResponseJSON(wechatImgs)
  74. // }
  75. func (c *WechatImgController) GetWechatImgList() {
  76. user := c.Context.Get("user").(*model.SysUser)
  77. page, _ := c.GetInt("page")
  78. pageSize, _ := c.GetInt("pagesize")
  79. list, err := c.dao.GetWechatImgList(user.OrgId, page, pageSize)
  80. if err != nil {
  81. c.ResponseError(err)
  82. }
  83. c.ResponseJSON(list)
  84. }
  85. func (c *WechatImgController) SyncWechatImg() {
  86. user := c.Context.Get("user").(*model.SysUser)
  87. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  88. if err != nil {
  89. c.ResponseError(err)
  90. }
  91. // appId := c.GetString(":appid")
  92. client, err := utils.Component.GetWxClient(appId)
  93. if err != nil {
  94. c.ResponseError(err)
  95. }
  96. count, err := client.GetMaterialCount()
  97. if err != nil {
  98. c.ResponseError(err)
  99. }
  100. imgcount := count["image_count"].(float64)
  101. page := int(imgcount)/20 + 1
  102. for i := 0; i < page; i++ {
  103. var data = map[string]string{}
  104. offset := i * 20
  105. data["offset"] = strconv.Itoa(offset)
  106. data["type"] = "image"
  107. data["count"] = strconv.Itoa(20)
  108. wechatImg, err := client.GetMaterialList(data)
  109. if err != nil {
  110. c.ResponseError(err)
  111. }
  112. if wechatImg == nil {
  113. break
  114. }
  115. err = c.dao.SyncWechatImg(wechatImg, user.OrgId)
  116. if err != nil {
  117. c.ResponseError(err)
  118. }
  119. }
  120. c.ResponseJSON("同步成功")
  121. }
  122. func (c *WechatImgController) AddNewImg() {
  123. file, head, err := c.Ctx.Request.FormFile("media")
  124. if err != nil {
  125. beego.Error(err)
  126. c.ResponseError(err)
  127. }
  128. defer file.Close()
  129. imgurl := "./upload/" + head.Filename
  130. defer os.Remove(imgurl)
  131. //创建文件
  132. fW, err := os.Create(imgurl)
  133. if err != nil {
  134. fmt.Println("文件创建失败")
  135. return
  136. }
  137. defer fW.Close()
  138. _, err = io.Copy(fW, file)
  139. if err != nil {
  140. fmt.Println("文件保存失败")
  141. return
  142. }
  143. if err != nil {
  144. c.ResponseError(err)
  145. }
  146. url, err := c.BaseController.FileUploadMatrial()
  147. if err != nil {
  148. c.ResponseError(err)
  149. }
  150. utils.LogInfo("↓↓↓↓_________________________↓↓↓↓ali OSS img url(upload)↓↓↓↓___________________↓↓↓↓")
  151. utils.LogInfo(url)
  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. client, err := utils.Component.GetWxClient(appId)
  158. if err != nil {
  159. c.ResponseError(err)
  160. }
  161. id, err := UploaImage(client.GetToken(), imgurl)
  162. var img = model.TaWechatImg{
  163. MediaId: id,
  164. Url: beego.AppConfig.String("host") + head.Filename,
  165. Name: head.Filename,
  166. UpdateTime: time.Now(),
  167. OrgId: user.OrgId,
  168. }
  169. img.Url = url
  170. err = c.dao.AddWechatImg(img)
  171. if err != nil {
  172. c.ResponseError(err)
  173. }
  174. c.ResponseJSON(map[string]interface{}{
  175. "media_id": img.MediaId,
  176. "url": url,
  177. })
  178. }
  179. func (c *WechatImgController) DeleteImg() {
  180. user := c.Context.Get("user").(*model.SysUser)
  181. appId, err := c.sdao.GetAppIdByOrgId(user.OrgId)
  182. if err != nil {
  183. c.ResponseError(err)
  184. }
  185. // appId := c.GetString(":appid")
  186. client, err := utils.Component.GetWxClient(appId)
  187. if err != nil {
  188. c.ResponseError(err)
  189. }
  190. mediaId := c.GetString(":mediaId")
  191. err = c.dao.DeleteImg(mediaId)
  192. if err != nil {
  193. c.ResponseError(err)
  194. }
  195. _, err = client.DelMaterial(mediaId)
  196. if err != nil {
  197. c.ResponseError(err)
  198. }
  199. c.ResponseJSON("删除成功")
  200. }