wangfei 6 年之前
父節點
當前提交
b5577813a8
共有 7 個檔案被更改,包括 92 行新增14 行删除
  1. 45
    4
      controllers/component.go
  2. 2
    2
      controllers/sysorg/sysorg.go
  3. 7
    0
      models/wechat/wechat.go
  4. 7
    4
      routers/router.go
  5. 19
    2
      service/sysorg/sysorg.go
  6. 12
    0
      service/wechat/wechat.go
  7. 0
    2
      utils/aes.go

+ 45
- 4
controllers/component.go 查看文件

@@ -116,16 +116,21 @@ func (c *WechatController) ComponentPush() {
116 116
 			utils.LogError("获取微信信息失败")
117 117
 			c.ResponseRaw([]byte("success"))
118 118
 		}
119
+		beego.Error(info)
119 120
 		authorizerInfo := (info["authorizer_info"]).(map[string]interface{})
120
-
121
+		beego.Error(info["authorizer_info"])
121 122
 		// 插入数据库
122 123
 		mjson, _ := json.Marshal(msg)
124
+		HeadImg := ""
125
+		if authorizerInfo["head_img"] != nil {
126
+			HeadImg = authorizerInfo["head_img"].(string)
127
+		}
123 128
 		var conf = model.SysWechatConf{
124 129
 			Appid:             msg["AuthorizerAppid"],
125 130
 			AuthorizationCode: msg["AuthorizationCode"],
126 131
 			AuthorizationInfo: string(mjson),
127
-			WxNikeName:        authorizerInfo["nikd_name"].(string),
128
-			HeadImg:           authorizerInfo["head_img"].(string),
132
+			WxNikeName:        authorizerInfo["nick_name"].(string),
133
+			HeadImg:           HeadImg,
129 134
 			UserName:          authorizerInfo["user_name"].(string),
130 135
 			PrincipalName:     authorizerInfo["principal_name"].(string),
131 136
 			QrcodeUrl:         authorizerInfo["qrcode_url"].(string),
@@ -235,7 +240,6 @@ func (c *WechatController) GetPreAuthCode() {
235 240
 // GetWechatMenuByAppID 根据appid获取微信详情
236 241
 func (c *WechatController) GetWechatInfoByAppID() {
237 242
 	appid := c.GetString(":appid")
238
-	beego.Error(utils.Component)
239 243
 	wxclient, err := utils.Component.GetWxClient(appid)
240 244
 	if err != nil {
241 245
 		utils.LogError("获取微信信息失败: " + err.Error())
@@ -248,3 +252,40 @@ func (c *WechatController) GetWechatInfoByAppID() {
248 252
 	}
249 253
 	c.ResponseJSON(info)
250 254
 }
255
+
256
+// GetWechatMenuByAppID 获取菜单
257
+func (c *WechatController) GetWechatMenuByAppID() {
258
+	appid := c.GetString(":appid")
259
+	wxclient, err := utils.Component.GetWxClient(appid)
260
+	if err != nil {
261
+		utils.LogError("获取微信信息失败: " + err.Error())
262
+		c.ResponseError(err)
263
+	}
264
+	menus, err := wxclient.GetMenu()
265
+	if err != nil {
266
+		utils.LogError("获取微信详情失败: " + err.Error())
267
+		c.ResponseError(err)
268
+	}
269
+	c.ResponseJSON(menus)
270
+}
271
+
272
+// GetWechatByCode 根据code获取微信信息
273
+func (c *WechatController) GetWechatByCode() {
274
+	code := c.GetString(":code")
275
+	beego.Error(code)
276
+	conf, err := c.wechatServ.GetWechatByCode(code)
277
+	if err != nil {
278
+		utils.LogError("获取微信详情失败: " + err.Error())
279
+		c.ResponseError(err)
280
+	}
281
+	beego.Error(conf)
282
+	if conf == nil || conf.ConfId == "" || conf.Status == models.STATUS_NORMAL {
283
+		c.ResponseJSON("")
284
+	}
285
+
286
+	c.ResponseJSON(map[string]string{
287
+		"ConfId":   conf.ConfId,
288
+		"NickName": conf.WxNikeName,
289
+		"HeadImg":  conf.HeadImg,
290
+	})
291
+}

+ 2
- 2
controllers/sysorg/sysorg.go 查看文件

@@ -65,9 +65,9 @@ func (c *SysorgController) DeleteOrg() {
65 65
 // OrgBindWechat 项目绑定微信
66 66
 func (c *SysorgController) OrgBindWechat() {
67 67
 	orgid := c.GetString(":orgid")
68
-	code := c.GetString(":code")
68
+	confid := c.GetString(":confid")
69 69
 
70
-	err := c.dao.BindWechat(orgid, code)
70
+	err := c.dao.BindWechat(orgid, confid)
71 71
 	if err != nil {
72 72
 		c.ResponseError(err)
73 73
 	}

+ 7
- 0
models/wechat/wechat.go 查看文件

@@ -100,3 +100,10 @@ func (m *WechatDAO) GetWxByCode(code string) (*model.SysWechatConf, error) {
100 100
 	_, err := m.db.Where("authorization_code=?", code).And("status>?", models.STATUS_DEL).Get(&conf)
101 101
 	return &conf, err
102 102
 }
103
+
104
+// GetWechatConfByConfId 根据confid获取微信信息
105
+func (m *WechatDAO) GetWechatConfByConfId(confid string) (*model.SysWechatConf, error) {
106
+	var conf model.SysWechatConf
107
+	_, err := m.db.Where("conf_id=?", confid).And("status>?", models.STATUS_DEL).Get(&conf)
108
+	return &conf, err
109
+}

+ 7
- 4
routers/router.go 查看文件

@@ -60,7 +60,7 @@ func RouteInit() {
60 60
 			beego.NSRouter("/sysorg", &sysorg.SysorgController{}, "put:AuthOrg"),
61 61
 			beego.NSRouter("/sysorg/:orgId", &sysorg.SysorgController{}, "delete:DeleteOrg"),
62 62
 
63
-			beego.NSRouter("/sysorg/:orgid/:code", &sysorg.SysorgController{}, "put:OrgBindWechat"),
63
+			beego.NSRouter("/sysorg/:orgid/:confid", &sysorg.SysorgController{}, "put:OrgBindWechat"),
64 64
 
65 65
 			// 文件
66 66
 			beego.NSRouter("/file", &controllers.BaseController{}, "post:FileUpload"),
@@ -68,15 +68,18 @@ func RouteInit() {
68 68
 			// 微信菜单
69 69
 			beego.NSRouter("/wechatmenu", &wechatmenu.MenuController{}, "get:GetMenuList"),
70 70
 			beego.NSRouter("/wechatmenu", &wechatmenu.MenuController{}, "put:RefreshMenu"),
71
+
72
+			// 微信
73
+			beego.NSRouter("/authcode", &controllers.WechatController{}, "get:GetPreAuthCode"),
74
+			beego.NSRouter("/wechat/conf/:code", &controllers.WechatController{}, "get:GetWechatByCode"),
71 75
 		),
72 76
 
73 77
 		beego.NSRouter("/ticket", &controllers.WechatController{}, "post:ComponentPush"),
74 78
 		beego.NSRouter("/ticket", &controllers.WechatController{}, "get:ComponentPush"),
75 79
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "get:WxReceive"),
76 80
 		beego.NSRouter("/:appid/callback", &controllers.WechatController{}, "post:WxReceive"),
77
-		beego.NSRouter("/authcode", &controllers.WechatController{}, "get:GetPreAuthCode"),
78
-		beego.NSRouter("/wechatinfo/:appid", &controllers.WechatController{}, "get:GetWechatInfoByAppID"),
79
-		// beego.NSRouter("/menu/:appid", &controllers.WechatController{}, "get:GetWechatMenuByAppID"),
81
+		// beego.NSRouter("/wechatinfo/:appid", &controllers.WechatController{}, "get:GetWechatInfoByAppID"),
82
+		beego.NSRouter("/menu/:appid", &controllers.WechatController{}, "get:GetWechatMenuByAppID"),
80 83
 	)
81 84
 
82 85
 	beego.AddNamespace(ns)

+ 19
- 2
service/sysorg/sysorg.go 查看文件

@@ -2,6 +2,8 @@ package sysorg
2 2
 
3 3
 import (
4 4
 	"errors"
5
+	"time"
6
+	"wechat-conf/models"
5 7
 	"wechat-conf/models/model"
6 8
 	"wechat-conf/models/sysorg"
7 9
 	"wechat-conf/models/wechat"
@@ -83,8 +85,8 @@ func (s *SysorgServ) DeleteOrg(orgId string) error {
83 85
 }
84 86
 
85 87
 // BindWechat 绑定微信
86
-func (s *SysorgServ) BindWechat(orgid, code string) error {
87
-	wechatConf, err := s.wechatdao.GetWxByCode(code)
88
+func (s *SysorgServ) BindWechat(orgid, confid string) error {
89
+	wechatConf, err := s.wechatdao.GetWechatConfByConfId(confid)
88 90
 	if err != nil {
89 91
 		return err
90 92
 	}
@@ -97,5 +99,20 @@ func (s *SysorgServ) BindWechat(orgid, code string) error {
97 99
 		WechatName: wechatConf.WxNikeName,
98 100
 	}
99 101
 	err = s.dao.AuthOrg(orginfo)
102
+
103
+	if err != nil {
104
+		return err
105
+	}
106
+	// 更新微信信息
107
+	var conf = model.SysWechatConf{
108
+		BindDate: time.Now().Local(),
109
+		Status:   models.STATUS_NORMAL,
110
+		ConfId:   wechatConf.ConfId,
111
+	}
112
+
113
+	err = s.wechatdao.UpdateWechatConf(conf, []string{
114
+		"bind_date",
115
+		"status",
116
+	})
100 117
 	return err
101 118
 }

+ 12
- 0
service/wechat/wechat.go 查看文件

@@ -46,3 +46,15 @@ func (s *WechatServ) UpdateComponentTicket(conf *model.SysComponentConf) error {
46 46
 	err := s.dao.UpdateComponentTicket(conf)
47 47
 	return err
48 48
 }
49
+
50
+// GetWechatByCode 根据code获取微信信息
51
+func (s *WechatServ) GetWechatByCode(code string) (*model.SysWechatConf, error) {
52
+	conf, err := s.dao.GetWxByCode(code)
53
+	return conf, err
54
+}
55
+
56
+// GetWechatConfByConfId 根据confid获取微信信息
57
+func (s *WechatServ) GetWechatConfByConfId(confid string) (*model.SysWechatConf, error) {
58
+	conf, err := s.dao.GetWechatConfByConfId(confid)
59
+	return conf, err
60
+}

+ 0
- 2
utils/aes.go 查看文件

@@ -46,8 +46,6 @@ func AesDecrypt(crypted, key []byte) ([]byte, error) {
46 46
 	blockSize := block.BlockSize()
47 47
 	blockMode := cipher.NewCBCDecrypter(block, key[:blockSize])
48 48
 	origData := make([]byte, len(crypted))
49
-	beego.Error(origData)
50
-	beego.Error(crypted)
51 49
 	blockMode.CryptBlocks(origData, crypted)
52 50
 	origData = PKCS7UnPadding(origData)
53 51
 	return origData, nil