package wechatimg import ( "fmt" "io" "os" "strconv" "time" "wechat-conf/controllers" "wechat-conf/models/model" "wechat-conf/service/sysuser" "wechat-conf/service/wechatimg" "wechat-conf/utils" "github.com/astaxie/beego" ) // 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) GetWechatImgCount() { user := c.Context.Get("user").(*model.SysUser) appid, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } // appid := c.GetString(":appid") wxclient, err := utils.Component.GetWxClient(appid) if err != nil { utils.LogError("获取微信信息失败: " + err.Error()) c.ResponseError(err) } count, err := wxclient.GetMaterialCount() if err != nil { utils.LogError("获取微信详情失败: " + err.Error()) c.ResponseError(err) } matype := c.GetString(":type") c.ResponseJSON(count[matype+"_count"]) } func (c *WechatImgController) GetWechatImgList() { user := c.Context.Get("user").(*model.SysUser) appid, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } // appid := c.GetString(":appid") wxclient, err := utils.Component.GetWxClient(appid) if err != nil { utils.LogError("获取微信信息失败: " + err.Error()) c.ResponseError(err) } var data = map[string]string{} data["offset"] = "0" data["type"] = c.GetString(":type") data["count"] = "10" wechatImgs, err := wxclient.GetMaterialList(data) if err != nil { utils.LogError("获取微信详情失败: " + err.Error()) c.ResponseError(err) } c.ResponseJSON(wechatImgs) } func (c *WechatImgController) SyncWechatImg() { user := c.Context.Get("user").(*model.SysUser) appId, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } // appId := c.GetString(":appid") client, err := utils.Component.GetWxClient(appId) if err != nil { c.ResponseError(err) } count, err := client.GetMaterialCount() if err != nil { c.ResponseError(err) } imgcount := count["image_count"].(float64) page := int(imgcount)/20 + 1 for i := 0; i < page; 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() { file, head, err := c.Ctx.Request.FormFile("media") if err != nil { beego.Error(err) c.ResponseError(err) } defer file.Close() imgurl := "./upload/" + head.Filename //创建文件 fW, err := os.Create(imgurl) if err != nil { fmt.Println("文件创建失败") return } defer fW.Close() _, err = io.Copy(fW, file) if err != nil { fmt.Println("文件保存失败") return } 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) } id, err := UploaImage(client.GetToken(), imgurl) var img = model.TaWechatImg{ MediaId: id, Url: beego.AppConfig.String("host") + head.Filename, Name: head.Filename, UpdateTime: time.Now(), OrgId: user.OrgId, } err = c.dao.AddWechatImg(img) if err != nil { c.ResponseError(err) } c.ResponseJSON("上传成功") } func (c *WechatImgController) DeleteImg() { user := c.Context.Get("user").(*model.SysUser) appId, err := c.sdao.GetAppIdByOrgId(user.OrgId) if err != nil { c.ResponseError(err) } // appId := c.GetString(":appid") client, err := utils.Component.GetWxClient(appId) if err != nil { c.ResponseError(err) } mediaId := c.GetString(":mediaId") err = c.dao.DeleteImg(mediaId) if err != nil { c.ResponseError(err) } _, err = client.DelMaterial(mediaId) if err != nil { c.ResponseError(err) } c.ResponseJSON("删除成功") }