package wechatimg import ( "mime/multipart" "strconv" "time" "unsafe" "wechat-conf/controllers" "wechat-conf/models/model" "wechat-conf/service/sysuser" "wechat-conf/service/wechatimg" "wechat-conf/utils" ) // WechatImgController 信息 type WechatImgController struct { dao *wechatimg.WechatImgServ sdao *sysuser.SysuserServ controllers.BaseController } // Constructor 初始化 Controller // @Title Constructor // @Description 初始化 Controller, 系统自动调用 func (c *WechatImgController) Constructor() { c.dao = wechatimg.NewWechatImgServ(c.Context) c.sdao = sysuser.NewSysuserServ(c.Context) } func (c *WechatImgController) GetWechatImgList() { user := c.Context.Get("user").(*model.SysUser) appId, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } client, err := utils.Component.GetWxClient(appId) if err != nil { c.ResponseError(err) } page, _ := c.GetInt("page") pageSize, _ := c.GetInt("pagesize") offset := page * (pageSize - 1) var data map[string]string data["offset"] = strconv.Itoa(offset) data["type"] = "image" data["count"] = strconv.Itoa(pageSize) wechatImg, err := client.GetMaterialList(data) if err != nil { c.ResponseError(err) } c.ResponseJSON(wechatImg) } func (c *WechatImgController) SyncWechatImg() { user := c.Context.Get("user").(*model.SysUser) appId, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } client, err := utils.Component.GetWxClient(appId) if err != nil { c.ResponseError(err) } for i := 0; i < 200; i++ { var data map[string]string offset := i * 20 data["offset"] = strconv.Itoa(offset) data["type"] = "image" data["count"] = strconv.Itoa(20) wechatImg, err := client.GetMaterialList(data) if err != nil { c.ResponseError(err) } if wechatImg == nil { break } err = c.dao.SyncWechatImg(wechatImg, user.OrgId) if err != nil { c.ResponseError(err) } } c.ResponseJSON("同步成功") } func (c *WechatImgController) AddNewImg() { user := c.Context.Get("user").(*model.SysUser) fromFront := c.GetString("fromFront") req := c.Ctx.Request file, fh, err := req.FormFile(fromFront) appId, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } client, err := utils.Component.GetWxClient(appId) if err != nil { c.ResponseError(err) } token := utils.Component.GetToken() type wechatMatrial struct { access_token string media multipart.File } var media = wechatMatrial{ access_token: token, media: file, } byteDate := *(*[]byte)(unsafe.Pointer(&media)) data, err := client.AddMaterial(byteDate, "image") var img = model.TaWechatImg{ MediaId: data["media_id"].(string), Url: data["url"].(string), Name: fh.Filename, UpdateTime: time.Now(), } err = c.dao.AddWechatImg(img) if err != nil { c.ResponseError(err) } c.ResponseJSON("上传成功") } func (c *WechatImgController) DeleteImg() { mediaId := c.GetString("mediaId") err := c.dao.DeleteImg(mediaId) if err != nil { c.ResponseError(err) } c.ResponseJSON("删除成功") }