浏览代码

fix:公众号关注、取消关注消息处理

Roc 7 月之前
父节点
当前提交
41dd75aacf
共有 2 个文件被更改,包括 38 次插入3 次删除
  1. 1 3
      controllers/user/user_controller.go
  2. 37 0
      service/auth/auth_service.go

+ 1 - 3
controllers/user/user_controller.go

@@ -474,13 +474,11 @@ type BindGzhReq struct {
 // @Success 200 {object} controllers.BaseResponse
 // @router /wx/notify [get,post]
 func (u *UserController) Notify() {
-	logger.Info("wx notify")
 	echostr := u.GetString("echostr")
 	method := u.Ctx.Input.Method()
 	if method == "POST" {
 		body := u.Ctx.Input.RequestBody
 		item := new(Notify)
-		logger.Info("wx notify body:", string(body))
 		err := xml.Unmarshal(body, &item)
 		if err != nil {
 			logger.Info("xml.Unmarshal:" + err.Error())
@@ -509,7 +507,7 @@ func (u *UserController) Notify() {
 				go auth.BindWxGzhByOpenId(openId)
 			case "unsubscribe":
 				fmt.Println("取消关注")
-				go auth.BindWxGzhByOpenId(openId)
+				go auth.UnSubscribeWxGzhByOpenId(openId)
 			case "CLICK":
 				//returnResult = xmlTpl
 			default:

+ 37 - 0
service/auth/auth_service.go

@@ -390,3 +390,40 @@ func BindWxGzhByOpenId(openId string) (isBind bool, err error) {
 
 	return
 }
+
+// UnSubscribeWxGzhByOpenId
+// @Description: 通过openid取消关注微信公众号
+// @author: Roc
+// @datetime 2024-08-13 13:19:49
+// @param openId string
+// @return isBind bool
+// @return err error
+func UnSubscribeWxGzhByOpenId(openId string) {
+	logger.Info("openId:" + openId)
+	var err error
+	defer func() {
+		if err != nil {
+			logger.Info("通过openid取消关注微信公众号失败,openId:", openId, ";错误信息:", err.Error())
+		}
+	}()
+	// 通过公众号openid获取用户信息
+	user, err := userService.GetTemplateUserByGzhOpenId(openId)
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			err = nil
+			// 找不到就直接返回了
+			return
+		} else {
+			err = exception.New(exception.TemplateUserNotFound)
+			return
+		}
+	}
+
+	// 解绑用户
+	err = userService.BindUserGzhOpenId(user.Id, openId, 0)
+	if err != nil {
+		logger.Info("UnBindWxGzhByOpenId,Err" + err.Error())
+	}
+
+	return
+}