wanghuidong 5 éve
szülő
commit
e10d59a2fb
5 módosított fájl, 24 hozzáadás és 5 törlés
  1. 2 0
      go.mod
  2. 1 1
      main.go
  3. 18 2
      rpc/rpc.go
  4. 1 0
      weixin/config.go
  5. 2 2
      weixin/httpHandle.go

+ 2 - 0
go.mod

@@ -1,3 +1,5 @@
 module app.yhyue.com/BP/weixin_util
 
 require app.yhyue.com/BP/common_utils v0.0.0-20200528093434-335d3b55fd71
+
+go 1.13

+ 1 - 1
main.go

@@ -10,7 +10,7 @@ import (
 func init() {
 	weixin.ReadConfig("./wxCfg.json", &weixin.WxConfig)
 	log.Println("WxConfig:", weixin.WxConfig)
-	//weixin.SE = encrypt.SimpleEncrypt{Key: weixin.WxConfig.EncryptKey}
+	weixin.WxMenuRedirectUrl = "http%3A%2F%2F" + weixin.WxConfig.Domain + "%2Fwx%2Fsso%3Fcallback%3Dhttp%3A%2F%2F" + weixin.WxConfig.Domain + "%2F"
 }
 
 func main() {

+ 18 - 2
rpc/rpc.go

@@ -2,6 +2,7 @@ package rpc
 
 import (
 	"app.yhyue.com/BP/weixin_util/weixin"
+	"fmt"
 	"log"
 	"net"
 	"net/http"
@@ -34,6 +35,10 @@ type NotifyMsg struct {
 //RPCResult
 type Result string
 
+const (
+	WX_OAUTH2_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
+)
+
 func (wxRPC *WeiXinRpc) SendTplMsg(msgTmpIdKey string, param *NotifyMsg, ret *Result) (err error) {
 	var msg struct {
 		ToUser   string `json:"touser"`
@@ -87,8 +92,19 @@ func (wxRPC *WeiXinRpc) CreateMenu(menu *weixin.Menu, ret *Result) (err error) {
 	menu.Buttons[1].Name = "业务2"
 	menu.Buttons[1].Type = MenuButtonTypeUrl
 	menu.Buttons[1].Url = url2*/
-
-	err = weixin.Mux.CreateMenu(menu)
+	menu2 := &weixin.Menu{make([]weixin.MenuButton, len(menu.Buttons))}
+	if len(menu.Buttons) > 0 {
+		for index, _menuBtn := range menu.Buttons {
+			menu2.Buttons[index].Name = _menuBtn.Name
+			menu2.Buttons[index].Type = weixin.MenuButtonTypeUrl
+			_url := _menuBtn.Url
+			if _url != "" {
+				url := fmt.Sprintf(WX_OAUTH2_URL, weixin.WxConfig.AppId, weixin.WxMenuRedirectUrl+_url)
+				menu2.Buttons[index].Url = url
+			}
+		}
+	}
+	err = weixin.Mux.CreateMenu(menu2)
 	if err != nil {
 		*ret = "菜单创建失败"
 		log.Println("菜单创建失败")

+ 1 - 0
weixin/config.go

@@ -75,5 +75,6 @@ func WriteSysConfig(config ...interface{}) {
 	}
 }
 
+var WxMenuRedirectUrl string
 var WxConfig wxCfg
 var Mux *Weixin

+ 2 - 2
weixin/httpHandle.go

@@ -8,7 +8,7 @@ import (
 	"strings"
 )
 
-func CreateMenu(rw http.ResponseWriter, r *http.Request) {
+/*func CreateMenu(rw http.ResponseWriter, r *http.Request) {
 	url1 := "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WxConfig.AppId + "&redirect_uri=http%3A%2F%2F" + WxConfig.Domain + "%2Fwx%2Fsso%3Fcallback%3Dhttp%3A%2F%2F" + WxConfig.Domain + "%2Fkjj%2Fbusiness1&response_type=code&scope=snsapi_base&state=1#wechat_redirect"
 	menu := &Menu{make([]MenuButton, 2)}
 	menu.Buttons[0].Name = "业务1"
@@ -26,7 +26,7 @@ func CreateMenu(rw http.ResponseWriter, r *http.Request) {
 	} else {
 		fmt.Fprint(rw, "菜单创建成功!")
 	}
-}
+}*/
 
 func Sso(w http.ResponseWriter, r *http.Request) {
 	uri := r.RequestURI