代码拉取完成,页面将自动刷新
package account
import (
"encoding/json"
"errors"
"fmt"
"gitee.com/yizhisamoye/GoWeChat/entity/common"
"gitee.com/yizhisamoye/GoWeChat/entity/menu"
"gitee.com/yizhisamoye/GoWeChat/entity/user"
"gitee.com/yizhisamoye/GoWeChat/utils"
)
/**
菜单管理
*/
func(w WxAccount) CreateMenu(menu menu.Menu)error{
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/create?access_token=%s",w.accessToken)
_,err:=utils.SendJson(url,map[string]interface{}{
"button":menu.Button,
})
return err
}
//获取所有菜单
func(w WxAccount) GetAllMenu()(menu.Menu,error){
resultMenu:= menu.Menu{}
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/get_current_selfmenu_info?access_token=%s",w.accessToken)
result,err:=utils.GetJson(url)
if err!=nil{
return resultMenu,err
}
if isMenuOpen:=int(result["is_menu_open"].(float64));isMenuOpen==0{
return resultMenu,errors.New("菜单未开启,请前往微信公众号设置")
}
selfMenuInfo:=result["selfmenu_info"].(map[string]interface{})
tmpButton:=selfMenuInfo["button"].([]interface{})
buttons:=make([]menu.MenuButton,0)
for _,v:=range tmpButton{
vMap:=v.(map[string]interface{})
button:=new(menu.MenuButton)
if tmpSubButtons,exist:=vMap["sub_button"];exist{
button.Name=vMap["name"].(string)
button.SubButton=make([]menu.MenuButton,0)
singleSubButton:=new(menu.MenuButton)
subButtons:=(tmpSubButtons.(map[string]interface{}))["list"].([]interface{})
for _,tmpSubButton:=range subButtons{
subButton:=tmpSubButton.(map[string]interface{})
if tmpNewsInfos,exist:=subButton["news_info"];exist{
singleSubButton.Type=subButton["type"].(string)
singleSubButton.Name=subButton["name"].(string)
singleSubButton.Value=subButton["value"].(string)
singleSubButton.NewsInfo=make([]common.News,0)
newsInfos:=(tmpNewsInfos.(map[string][]interface{}))["list"]
for _,newInfo:=range newsInfos{
news:=new(common.News)
newInfoByte,_:=json.Marshal(newInfo)
json.Unmarshal(newInfoByte,news)
singleSubButton.NewsInfo=append(singleSubButton.NewsInfo,*news)
}
}else{
subButtonJsonByte,_:=json.Marshal(subButton)
json.Unmarshal(subButtonJsonByte,singleSubButton)
}
button.SubButton=append(button.SubButton,*singleSubButton)
}
}else{
vJsonByte,_:=json.Marshal(v)
json.Unmarshal(vJsonByte,button)
}
buttons=append(buttons,*button)
}
resultMenu.Button=buttons
return resultMenu,nil
}
//获取自定义菜单配置,只能获取通过api设置的菜单
func(w WxAccount) GetMenu()(*menu.Menu,[]menu.Menu,error){
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/get?access_token=%s",w.accessToken)
result,err:=utils.GetJson(url)
if err!=nil{
return nil,nil,err
}
//普通菜单
normalMenu:=new(menu.Menu)
tmpNormalMenu:=result["menu"].(map[string]interface{})
menuByte,_:=json.Marshal(tmpNormalMenu)
json.Unmarshal(menuByte,normalMenu)
//normalMenu.MenuId=tmpNormalMenu["menuid"].(string)
//tmpButton:=(tmpNormalMenu)["button"]
//tmpButtonByte,_:=json.Marshal(tmpButton)
//normalMenu.Button=make([]menu.MenuButton,0)
//json.Unmarshal(tmpButtonByte,normalMenu.Button)
//个性化菜单
conditionMenus:=make([]menu.Menu,0)
tmpConditionMenus:=result["conditionalmenu"].([]interface{})
menuByte,_=json.Marshal(tmpConditionMenus)
json.Unmarshal(menuByte,conditionMenus)
//for _,v:=range tmpConditionMenus{
// m:=new(menu.Menu)
// //menuid
// m.MenuId=(v.(map[string]interface{}))["menuid"].(string)
// //匹配规则
// tmpMatchRule:=new(menu.MenuMatchRule)
// tmpMatchRuleBytes,_:=json.Marshal((v.(map[string]interface{}))["matchrule"])
// json.Unmarshal(tmpMatchRuleBytes,tmpMatchRule)
// m.MatchRule=*tmpMatchRule
// //菜单按钮
// m.Button=make([]menu.MenuButton,0)
// tmpButtonByte,_:=json.Marshal((v.(map[string]interface{}))["button"].([]interface{}))
// json.Unmarshal(tmpButtonByte,m.Button)
// conditionMenus=append(conditionMenus,*m)
//}
return normalMenu,conditionMenus,nil
}
//删除菜单
func(w WxAccount) DeleteMenu()error{
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/delete?access_token=%s",w.accessToken)
_,err:=utils.GetJson(url)
return err
}
//创建个性化菜单
func(w WxAccount) CreateConditionMenu(m menu.Menu)error{
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/addconditional?access_token=%s",w.accessToken)
_,err:=utils.SendJson(url,map[string]interface{}{
"button":m.Button,
"matchrule":m.MatchRule,
})
return err
}
//删除个性化菜单
func(w WxAccount) DeleteConditionMenu(menuId string)error{
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/delconditional?access_token=%s",w.accessToken)
_,err:=utils.SendJson(url,map[string]string{
"menuid":menuId,
})
return err
}
//获取用户匹配的菜单
func(w WxAccount)MatchConditionMenu(user user.WxUser)(*menu.Menu,error){
url:=fmt.Sprintf(BaseUrl+"/cgi-bin/menu/trymatch?access_token=%s",w.accessToken)
result,err:=utils.SendJson(url,map[string]interface{}{
"user_id":user.OpenId,
})
if err!=nil{
return nil,err
}
m:=new(menu.Menu)
menuByte,_:=json.Marshal(result)
err=json.Unmarshal(menuByte,m)
return m,err
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。