Bladeren bron

添加微信二维码获取接口、微信扫码后NATS 处理 结果

siked 2 jaren geleden
bovenliggende
commit
ecb79e45f1
6 gewijzigde bestanden met toevoegingen van 40 en 236 verwijderingen
  1. 7 132
      Nats/Nats.go
  2. 3 18
      Nats/NatsServer/NatsWx.go
  3. 0 76
      controllers/Device.go
  4. 19 0
      controllers/User.go
  5. 8 7
      routers/User.go
  6. 3 3
      routers/v3.go

+ 7 - 132
Nats/Nats.go

@@ -48,7 +48,7 @@ func init() {
 
 
 func NatsInit() {
 func NatsInit() {
 
 
-	// 请求-响应, 响应 test3 消息。
+	// 获取微信二维码 返回结果
 	_, _ = lib.Nats.Subscribe("Wx_BasicMessage_Event_QRCode", func(m *nats.Msg) {
 	_, _ = lib.Nats.Subscribe("Wx_BasicMessage_Event_QRCode", func(m *nats.Msg) {
 		fmt.Printf(" => Nats   Wx_BasicMessage_Event_QRCode message: %s\n", string(m.Data))
 		fmt.Printf(" => Nats   Wx_BasicMessage_Event_QRCode message: %s\n", string(m.Data))
 
 
@@ -70,151 +70,26 @@ func NatsInit() {
 		fmt.Println("EventKey-", person_QRCode.EventKey)
 		fmt.Println("EventKey-", person_QRCode.EventKey)
 
 
 		// 开始  处理消息
 		// 开始  处理消息
-		if strings.Contains(person_QRCode.EventKey, "@宝智达 微信公众号通知") {
+		if strings.Contains(person_QRCode.EventKey, "@宝智达冷链 微信公众号通知") {
 			//"请将本内容发送到 深圳市宝智达科技有限公司 微信公众号-|"+lib.AesEncryptCBC(T_calss_id, "0123456789012345")+"|-",
 			//"请将本内容发送到 深圳市宝智达科技有限公司 微信公众号-|"+lib.AesEncryptCBC(T_calss_id, "0123456789012345")+"|-",
 			Content_r := lib.GetBetweenStr(person_QRCode.EventKey, "-|", "|-")
 			Content_r := lib.GetBetweenStr(person_QRCode.EventKey, "-|", "|-")
 			decryptCode := lib.AesDecryptCBC(Content_r, "0123456789012345")
 			decryptCode := lib.AesDecryptCBC(Content_r, "0123456789012345")
-			decryptCode_int, err := strconv.Atoi(decryptCode)
-			fmt.Println("解密结果:", decryptCode, "  decryptCode_int", decryptCode_int, "  Content_r:", Content_r)
-			R_DeviceNotice, err := Company.Read_CompanyNotice_ById(decryptCode_int)
+			fmt.Println("解密结果 UUID:", decryptCode, "  Content_r:", Content_r)
+			Admin_r, err := Account.Read_Admin_ByUuid(decryptCode)
 			if err != nil {
 			if err != nil {
 				_ = lib.Nats.Publish(m.Reply, []byte(""))
 				_ = lib.Nats.Publish(m.Reply, []byte(""))
 				return
 				return
 			}
 			}
 
 
-			if strings.Contains(R_DeviceNotice.T_Notice_wx, person_QRCode.FromUserName) {
+			Admin_r.T_wx = person_QRCode.FromUserName
+			Account.Update_Admin(Admin_r, "T_wx")
 
 
-				_ = lib.Nats.Publish(m.Reply, []byte(R_DeviceNotice.T_name+" 已绑定,无需重复绑定!"))
-				return
-			}
-
-			R_DeviceNotice.T_Notice_wx = R_DeviceNotice.T_Notice_wx + person_QRCode.FromUserName + "/重令名|"
-			Company.Update_CompanyNotice(R_DeviceNotice, "T_Notice_wx")
-
-			_ = lib.Nats.Publish(m.Reply, []byte(R_DeviceNotice.T_name+" 绑定成功!"))
+			_ = lib.Nats.Publish(m.Reply, []byte(Admin_r.T_name+" 绑定成功!"))
 			return
 			return
 		}
 		}
 		_ = lib.Nats.Publish(m.Reply, []byte(""))
 		_ = lib.Nats.Publish(m.Reply, []byte(""))
 	})
 	})
 
 
-	// 请求-响应, 响应 test3 消息。
-	_, _ = lib.Nats.Subscribe("Wx2_BasicMessage_Event_QRCode", func(m *nats.Msg) {
-		fmt.Printf(" => Nats   Wx2_BasicMessage_Event_QRCode message: %s\n", string(m.Data))
-
-		type Person_QRCode struct {
-			ToUserName   string `xml:"ToUserName"`   //注意这里有个反引号
-			FromUserName string `xml:"FromUserName"` //注意这里有个反引号
-			CreateTime   string `xml:"CreateTime"`   //注意这里有个反引号
-			EventKey     string `xml:"EventKey"`
-		}
-		var person_QRCode Person_QRCode
-		err1 := xml.Unmarshal(m.Data, &person_QRCode)
-		if err1 != nil {
-			fmt.Println("Unmarshal error")
-			_ = lib.Nats.Publish(m.Reply, []byte(""))
-			return
-		}
-		// 进入 二维码配对
-		fmt.Println("FromUserName-", person_QRCode.FromUserName)
-		fmt.Println("EventKey-", person_QRCode.EventKey)
-
-		// 开始  处理消息
-		if strings.Contains(person_QRCode.EventKey, "@宝智达 微信公众号通知") {
-			//"请将本内容发送到 深圳市宝智达科技有限公司 微信公众号-|"+lib.AesEncryptCBC(T_calss_id, "0123456789012345")+"|-",
-			Content_r := lib.GetBetweenStr(person_QRCode.EventKey, "-|", "|-")
-			decryptCode := lib.AesDecryptCBC(Content_r, "0123456789012345")
-			decryptCode_int, err := strconv.Atoi(decryptCode)
-			fmt.Println("解密结果:", decryptCode, "  decryptCode_int", decryptCode_int, "  Content_r:", Content_r)
-			R_DeviceNotice, err := Company.Read_CompanyNotice_ById(decryptCode_int)
-			if err != nil {
-				_ = lib.Nats.Publish(m.Reply, []byte(""))
-				return
-			}
-
-			if strings.Contains(R_DeviceNotice.T_Notice_wx2, person_QRCode.FromUserName+"/重令名|") {
-				_ = lib.Nats.Publish(m.Reply, []byte(R_DeviceNotice.T_name+" 重复扫码!请在 5分钟内 回复您的名字,否则将 无法收到报警消息!如回复:张三"))
-				return
-			}
-			if strings.Contains(R_DeviceNotice.T_Notice_wx2, person_QRCode.FromUserName) {
-				_ = lib.Nats.Publish(m.Reply, []byte(R_DeviceNotice.T_name+" 已绑定,无需重复绑定!"))
-				return
-			}
-
-			R_DeviceNotice.T_Notice_wx2 = R_DeviceNotice.T_Notice_wx2 + person_QRCode.FromUserName + "/重令名|"
-			Company.Update_CompanyNotice(R_DeviceNotice, "T_Notice_wx2")
-			redisCache_NatsServer.Put(person_QRCode.FromUserName, decryptCode_int, 5*time.Minute)
-			_ = lib.Nats.Publish(m.Reply, []byte(R_DeviceNotice.T_name+" 扫码成功!请在 5分钟内 回复您的名字,否则将 无法收到报警消息!如回复:张三"))
-			return
-		}
-		_ = lib.Nats.Publish(m.Reply, []byte(""))
-	})
-
-	// 请求-响应, 响应 test3 消息。
-	_, _ = lib.Nats.Subscribe("Wx2_BasicMessage_Text", func(m *nats.Msg) {
-		logs.Println(" => Nats   Wx2_BasicMessage_Text message: %s\n", string(m.Data))
-
-		type Person_Text struct {
-			ToUserName   string `xml:"ToUserName"`   //注意这里有个反引号
-			FromUserName string `xml:"FromUserName"` //注意这里有个反引号
-			CreateTime   string `xml:"CreateTime"`   //注意这里有个反引号
-			MsgType      string `xml:"MsgType"`
-			Content      string `xml:"Content"`
-		}
-
-		var person_Text Person_Text
-		err1 := xml.Unmarshal(m.Data, &person_Text)
-		if err1 != nil {
-			fmt.Println("Unmarshal error")
-			_ = lib.Nats.Publish(m.Reply, []byte(""))
-			return
-		}
-		// 进入 二维码配对
-		fmt.Println("FromUserName-", person_Text.FromUserName)
-		fmt.Println("Content-", person_Text.Content)
-
-		if len(person_Text.Content) > 8*3 || len(person_Text.Content) <= 1*3 {
-			_ = lib.Nats.Publish(m.Reply, []byte("请正确输入您的名字!"))
-			return
-		}
-
-		if !redisCache_NatsServer.IsExist(person_Text.FromUserName) {
-			return
-		}
-		Class_ById := lib.To_int(redisCache_NatsServer.Get(person_Text.FromUserName))
-		R_DeviceNotice, err := Company.Read_CompanyNotice_ById(Class_ById)
-		if err != nil {
-			_ = lib.Nats.Publish(m.Reply, []byte(""))
-			return
-		}
-
-		R_DeviceNotice.T_Notice_wx2 = strings.Replace(R_DeviceNotice.T_Notice_wx2,
-			person_Text.FromUserName+"/重令名|",
-			person_Text.FromUserName+"/"+person_Text.Content+"|",
-			-1)
-		Company.Update_CompanyNotice(R_DeviceNotice, "T_Notice_wx2")
-
-		// 删除 缓存
-		redisCache_NatsServer.Delete(person_Text.FromUserName)
-
-		_ = lib.Nats.Publish(m.Reply, []byte("尊敬的 "+person_Text.Content+",您以成功绑定 "+R_DeviceNotice.T_name))
-	})
-
-	//// 发布-订阅 模式,异步订阅 test1
-	//_, _ = Nats.Subscribe("test1", func(m *nats.Msg) {
-	//	fmt.Printf("Received a message: %s\n", string(m.Data))
-	//})
-
-	//// 队列 模式,订阅 test2, 队列为queue, test2 发向所有队列,同一队列只有一个能收到消息
-	//_, _ = Nats.QueueSubscribe("test2", "queue", func(msg *nats.Msg) {
-	//	fmt.Printf("Queue a message: %s\n", string(msg.Data))
-	//})
-
-	//// 请求-响应, 响应 test3 消息。
-	//_, _ = Nats.Subscribe("test3", func(m *nats.Msg) {
-	//	fmt.Printf("Reply a message: %s\n", string(m.Data))
-	//	_ = Nats.Publish(m.Reply, []byte("I can help!!"))
-	//})
-
 	// 请求-响应 验证登录
 	// 请求-响应 验证登录
 	_, _ = lib.Nats.Subscribe("Cold_User_verification", func(m *nats.Msg) {
 	_, _ = lib.Nats.Subscribe("Cold_User_verification", func(m *nats.Msg) {
 		fmt.Printf("Cold_User_verification message: %s\n", string(m.Data))
 		fmt.Printf("Cold_User_verification message: %s\n", string(m.Data))

+ 3 - 18
Nats/NatsServer/NatsWx.go

@@ -7,11 +7,11 @@ import (
 	"time"
 	"time"
 )
 )
 
 
-func Wx_GenerateQRCode(DeviceClass_id string) (string, bool) {
-	logs.Println(" => Nats", lib.FuncName(), DeviceClass_id)
+func Wx_GenerateQRCode(T_uuid string) (string, bool) {
+	logs.Println(" => Nats", lib.FuncName(), T_uuid)
 
 
 	// 请求-响应, 向 test3 发布一个 `help me` 请求数据,设置超时间3秒,如果有多个响应,只接收第一个收到的消息
 	// 请求-响应, 向 test3 发布一个 `help me` 请求数据,设置超时间3秒,如果有多个响应,只接收第一个收到的消息
-	msg, err := lib.Nats.Request("Wx_GenerateQR", []byte(DeviceClass_id), 3*time.Second)
+	msg, err := lib.Nats.Request("Wx_GenerateQR", []byte(T_uuid), 3*time.Second)
 	if err != nil {
 	if err != nil {
 		fmt.Println(err)
 		fmt.Println(err)
 	} else {
 	} else {
@@ -21,18 +21,3 @@ func Wx_GenerateQRCode(DeviceClass_id string) (string, bool) {
 
 
 	return string(msg.Data), false
 	return string(msg.Data), false
 }
 }
-
-func Wx_GenerateQRCode2(DeviceClass_id string) (string, bool) {
-	logs.Println(" => Nats", lib.FuncName(), DeviceClass_id)
-
-	// 请求-响应, 向 test3 发布一个 `help me` 请求数据,设置超时间3秒,如果有多个响应,只接收第一个收到的消息
-	msg, err := lib.Nats.Request("Wx2_GenerateQR", []byte(DeviceClass_id), 3*time.Second)
-	if err != nil {
-		fmt.Println(err)
-	} else {
-		fmt.Printf("Wx2_GenerateQR : %s\n", string(msg.Data))
-		return string(msg.Data), true
-	}
-
-	return string(msg.Data), false
-}

+ 0 - 76
controllers/Device.go

@@ -1500,82 +1500,6 @@ func (c *DeviceController) ClassBind_Del() {
 	return
 	return
 }
 }
 
 
-// 设备分类绑定二维码
-func (c *DeviceController) Get_DeviceClassId_QRCode() {
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	T_calss_id := c.GetString("T_class_id")
-	if len(T_calss_id) == 0 {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_calss_id Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	T_calss_id_str, _ := NatsServer.Wx_GenerateQRCode("-|" + lib.AesEncryptCBC(T_calss_id, "0123456789012345") + "|- @宝智达 微信公众号通知")
-	if len(T_calss_id_str) == 0 {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	type Text struct {
-		QR   string
-		Code string
-	}
-
-	T_calss_id_str = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + T_calss_id_str
-	Text_r := Text{
-		QR:   T_calss_id_str,
-		Code: "请将本内容发送到 深圳市宝智达科技有限公司 微信公众号-|" + lib.AesEncryptCBC(T_calss_id, "0123456789012345") + "|- @宝智达 微信公众号通知    ",
-	}
-	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Text_r}
-	c.ServeJSON()
-	return
-}
-func (c *DeviceController) Get_DeviceClassId_QRCode2() {
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	T_calss_id := c.GetString("T_class_id")
-	if len(T_calss_id) == 0 {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_calss_id Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	T_calss_id_str, _ := NatsServer.Wx_GenerateQRCode2("-|" + lib.AesEncryptCBC(T_calss_id, "0123456789012345") + "|- @宝智达 微信公众号通知")
-	if len(T_calss_id_str) == 0 {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "Err!"}
-		c.ServeJSON()
-		return
-	}
-
-	type Text struct {
-		QR   string
-		Code string
-	}
-
-	T_calss_id_str = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + T_calss_id_str
-	Text_r := Text{
-		QR:   T_calss_id_str,
-		Code: "请将本内容发送到 宝智达冷链科技有限公司 微信公众号-|" + lib.AesEncryptCBC(T_calss_id, "0123456789012345") + "|- @宝智达 微信公众号通知    ",
-	}
-	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Text_r}
-	c.ServeJSON()
-	return
-}
-
 // 设备通知 ------------------------------------------
 // 设备通知 ------------------------------------------
 func (c *DeviceController) CompanyNotice_List() {
 func (c *DeviceController) CompanyNotice_List() {
 	// 验证登录
 	// 验证登录

+ 19 - 0
controllers/User.go

@@ -1,6 +1,7 @@
 package controllers
 package controllers
 
 
 import (
 import (
+	"Cold_Api/Nats/NatsServer"
 	"Cold_Api/conf"
 	"Cold_Api/conf"
 	"Cold_Api/controllers/lib"
 	"Cold_Api/controllers/lib"
 	"Cold_Api/models/Account"
 	"Cold_Api/models/Account"
@@ -16,6 +17,24 @@ type UserController struct {
 	beego.Controller
 	beego.Controller
 }
 }
 
 
+// 获取微信二维码  ( 扫描后 ,Nats 自动绑定在 Admin->T_wx )
+func (c *DeviceController) User_WxQRCode() {
+	// 验证登录
+	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
+	if !b_ {
+		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	WxQRCode_str, _ := NatsServer.Wx_GenerateQRCode("-|" + lib.AesEncryptCBC(admin_r.T_uuid, "0123456789012345") + "|- @宝智达冷链 微信公众号通知")
+	WxQRCode_str = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + WxQRCode_str
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: WxQRCode_str}
+	c.ServeJSON()
+	return
+}
+
 // 公司管理
 // 公司管理
 func (c *UserController) Company_List() {
 func (c *UserController) Company_List() {
 	// 验证登录
 	// 验证登录

+ 8 - 7
routers/User.go

@@ -12,13 +12,14 @@ func init() {
 	//---------------------------------- 用户管理
 	//---------------------------------- 用户管理
 	// 用户
 	// 用户
 	beego.Router(version+"/Login_verification", &controllers.AdminController{}, "*:Login_verification")
 	beego.Router(version+"/Login_verification", &controllers.AdminController{}, "*:Login_verification")
-	beego.Router(version+"/User/List", &controllers.UserController{}, "*:User_List") // 用户列表
-	beego.Router(version+"/User/Info", &controllers.UserController{}, "*:User_Info") // 个人信息
-	beego.Router(version+"/User/Post", &controllers.UserController{}, "*:User_Post") // 修改个人信息
-	beego.Router(version+"/User/Get", &controllers.UserController{}, "*:User_Get")   // 获取用户信息
-	beego.Router(version+"/User/Add", &controllers.UserController{}, "*:User_Add")   // 增加用户
-	beego.Router(version+"/User/Edit", &controllers.UserController{}, "*:User_Edit") // 编辑用户
-	beego.Router(version+"/User/Del", &controllers.UserController{}, "*:User_Del")   // 删除用户
+	beego.Router(version+"/User/List", &controllers.UserController{}, "*:User_List")         // 用户列表
+	beego.Router(version+"/User/Info", &controllers.UserController{}, "*:User_Info")         // 个人信息
+	beego.Router(version+"/User/Post", &controllers.UserController{}, "*:User_Post")         // 修改个人信息
+	beego.Router(version+"/User/Get", &controllers.UserController{}, "*:User_Get")           // 获取用户信息
+	beego.Router(version+"/User/Add", &controllers.UserController{}, "*:User_Add")           // 增加用户
+	beego.Router(version+"/User/Edit", &controllers.UserController{}, "*:User_Edit")         // 编辑用户
+	beego.Router(version+"/User/Del", &controllers.UserController{}, "*:User_Del")           // 删除用户
+	beego.Router(version+"/User/WxQRCode", &controllers.UserController{}, "*:User_WxQRCode") // 删除用户
 
 
 	beego.Router(version+"/Admin/List", &controllers.UserController{}, "*:Admin_List")                 // 内部用户列表
 	beego.Router(version+"/Admin/List", &controllers.UserController{}, "*:Admin_List")                 // 内部用户列表
 	beego.Router(version+"/Admin/Get", &controllers.UserController{}, "*:Admin_Get")                   // 获取内部用户信息
 	beego.Router(version+"/Admin/Get", &controllers.UserController{}, "*:Admin_Get")                   // 获取内部用户信息

+ 3 - 3
routers/v3.go

@@ -62,9 +62,9 @@ func init() {
 	beego.Router(version+"/Device/DeviceClassBind_List", &controllers.DeviceController{}, "*:DeviceClassBind_List") // 设备分类绑定列表
 	beego.Router(version+"/Device/DeviceClassBind_List", &controllers.DeviceController{}, "*:DeviceClassBind_List") // 设备分类绑定列表
 	beego.Router(version+"/Class/Bind_Add", &controllers.DeviceController{}, "*:ClassBind_Add")                     // 添加分类设备绑定
 	beego.Router(version+"/Class/Bind_Add", &controllers.DeviceController{}, "*:ClassBind_Add")                     // 添加分类设备绑定
 	beego.Router(version+"/Class/Bind_Del", &controllers.DeviceController{}, "*:ClassBind_Del")                     // 删除分类设备绑定
 	beego.Router(version+"/Class/Bind_Del", &controllers.DeviceController{}, "*:ClassBind_Del")                     // 删除分类设备绑定
-	// 分类二维码
-	beego.Router(version+"/Device/Get_DeviceClassId_QRCode", &controllers.DeviceController{}, "*:Get_DeviceClassId_QRCode")   // 获取未读消息
-	beego.Router(version+"/Device/Get_DeviceClassId_QRCode2", &controllers.DeviceController{}, "*:Get_DeviceClassId_QRCode2") // 获取未读消息
+	//// 分类二维码 (不用)
+	//beego.Router(version+"/Device/Get_DeviceClassId_QRCode", &controllers.DeviceController{}, "*:Get_DeviceClassId_QRCode")   // 获取未读消息
+	//beego.Router(version+"/Device/Get_DeviceClassId_QRCode2", &controllers.DeviceController{}, "*:Get_DeviceClassId_QRCode2") // 获取未读消息
 
 
 	//通知管理
 	//通知管理
 	beego.Router(version+"/CompanyNotice/List", &controllers.DeviceController{}, "*:CompanyNotice_List")            // 分类通知
 	beego.Router(version+"/CompanyNotice/List", &controllers.DeviceController{}, "*:CompanyNotice_List")            // 分类通知