浏览代码

批量关注

kobe6258 8 月之前
父节点
当前提交
95476dea19

+ 0 - 14
common/component/es/es.go

@@ -199,13 +199,6 @@ func (req *ESQueryRequest) parseJsonQuery() (queryMap map[string]interface{}) {
 					req.Column: req.Key,
 				},
 			},
-			"highlight": map[string]interface{}{
-				"fields": map[string]interface{}{
-					req.Column: map[string]interface{}{},
-				},
-				"pre_tags":  []string{"<span style='color:#0078E8'>"},
-				"post_tags": []string{"</span>"},
-			},
 		}
 		return
 	case MatchAllByCondition:
@@ -226,13 +219,6 @@ func (req *ESQueryRequest) parseJsonQuery() (queryMap map[string]interface{}) {
 					},
 				},
 			},
-			"highlight": map[string]interface{}{
-				"fields": map[string]interface{}{
-					req.Column: map[string]interface{}{},
-				},
-				"pre_tags":  []string{"<span style='color:#0078E8'>"},
-				"post_tags": []string{"</span>"},
-			},
 		}
 		return
 	case Match:

+ 101 - 0
controllers/user/user_controller.go

@@ -1,14 +1,18 @@
 package user
 
 import (
+	"encoding/xml"
 	"eta/eta_mini_ht_api/common/component/cache"
 	logger "eta/eta_mini_ht_api/common/component/log"
 	"eta/eta_mini_ht_api/common/exception"
 	authUtils "eta/eta_mini_ht_api/common/utils/auth"
 	"eta/eta_mini_ht_api/controllers"
+	"eta/eta_mini_ht_api/service/auth"
 	"eta/eta_mini_ht_api/service/user"
 	"fmt"
+	"strconv"
 	"strings"
+	"time"
 )
 
 // UserController Operations about Users
@@ -405,3 +409,100 @@ func covertToUserProfile(user user.User) UserProfileReq {
 		Mobile:   user.Mobile,
 	}
 }
+
+// ReadMessages  绑定微信公众号
+// @Summary 绑定微信公众号
+// @Description 绑定微信公众号
+// @Success 200 {object} controllers.BaseResponse
+// @router /bind_gzh [post]
+func (u *UserController) BindGzh() {
+	controllers.Wrap(&u.BaseController, func() (result *controllers.WrapData, err error) {
+		result = u.InitWrapData("获取我的未读消息失败")
+		bindReq := new(BindGzhReq)
+		u.GetPostParams(bindReq)
+		code := bindReq.Code
+		isBind, err := auth.BindWxGzh(code)
+		if err != nil {
+			logger.Error("绑定公众号失败:%v", err)
+			u.FailedResult("绑定公众号失败", result)
+			return
+		}
+		u.SuccessResult("绑定成功", IsBindGzhRes{
+			IsBind: isBind,
+		}, result)
+		return
+	})
+}
+
+type IsBindGzhRes struct {
+	IsBind bool `json:"isBind"`
+}
+
+type BindGzhReq struct {
+	Code string `json:"Code"`
+}
+
+// ReadMessages  微信公众号回调
+// @Summary 微信公众号回调
+// @Description 微信公众号回调
+// @Success 200 {object} controllers.BaseResponse
+// @router /notify [get,post]
+func (u *UserController) Notify() {
+	echostr := u.GetString("echostr")
+	method := u.Ctx.Input.Method()
+	if method == "POST" {
+		body := u.Ctx.Input.RequestBody
+		item := new(Notify)
+		err := xml.Unmarshal(body, &item)
+		if err != nil {
+			logger.Info("xml.Unmarshal:" + err.Error())
+		}
+		contactMsg := ""
+
+		var openId, returnResult string
+		if item.MsgType != "" {
+			openId = item.FromUserName
+		}
+		xmlTpl := `<xml>
+		<ToUserName><![CDATA[%s]]></ToUserName>
+		<FromUserName><![CDATA[%s]]></FromUserName>
+		<CreateTime>%s</CreateTime>
+		<MsgType><![CDATA[text]]></MsgType>
+		<Content><![CDATA[%s]]></Content>
+		</xml>`
+		createTime := strconv.FormatInt(time.Now().Unix(), 10)
+		// WxId := "gh_5dc508325c6f" // 弘则投研公众号原始id
+		xmlTpl = fmt.Sprintf(xmlTpl, openId, "gh_b2f5b115ec8d", createTime, contactMsg)
+
+		if item.MsgType == "event" {
+			switch item.Event {
+			case "subscribe":
+				fmt.Println("关注")
+				//go subscribe(openId)
+			case "unsubscribe":
+				fmt.Println("取消关注")
+				//go unsubscribe(openId)
+			case "CLICK":
+				returnResult = xmlTpl
+			default:
+				logger.Info("wechat notify event:" + item.Event)
+			}
+			u.Ctx.WriteString(xmlTpl)
+		} else {
+			returnResult = xmlTpl
+		}
+		u.Ctx.WriteString(returnResult)
+	} else {
+		u.Ctx.WriteString(echostr)
+	}
+}
+
+type Notify struct {
+	ToUserName   string `xml:"ToUserName"`
+	FromUserName string `xml:"FromUserName"`
+	CreateTime   int    `xml:"CreateTime"`
+	MsgType      string `xml:"MsgType"`
+	Event        string `xml:"Event"`
+	EventKey     string `xml:"EventKey"`
+	Content      string `xml:"Content"`
+}

+ 0 - 32
controllers/user/wechat.go

@@ -1,32 +0,0 @@
-package user
-
-import (
-	logger "eta/eta_mini_ht_api/common/component/log"
-	"eta/eta_mini_ht_api/common/exception"
-	"eta/eta_mini_ht_api/controllers"
-	"eta/eta_mini_ht_api/service/auth"
-)
-
-// RefreshToken 绑定微信公众号
-// @Summary 绑定微信公众号
-// @Success 200 {object} controllers.BaseResponse
-// @Description 更新token
-// @router /bind_gzh [get]
-func (a *AuthController) BindGzh(code string) {
-	controllers.Wrap(&a.BaseController, func() (result *controllers.WrapData, err error) {
-		result = a.InitWrapData("刷新token失败")
-		if code == "" {
-			logger.Error("code不能为空")
-			return result, exception.New(exception.WeChatCodeEmpty)
-		}
-		//刷新token
-		err = auth.BindWxGzh(code)
-		if err != nil {
-			logger.Error("绑定公众号失败:%v", err)
-			a.FailedResult("绑定公众号失败", result)
-			return
-		}
-		a.SuccessResult("绑定成功", nil, result)
-		return
-	})
-}

+ 0 - 4
domian/user/user_serivce.go

@@ -150,10 +150,6 @@ func BindUserGzhOpenId(userId int, openId string) (err error) {
 
 func GetTemplateUserByGzhOpenId(openId string) (user UserDTO, err error) {
 	templateUser, err := userDao.GetUserByGzhOpenId(openId)
-	if err != nil {
-		logger.Error("获取用户信息失败:%v", err)
-		return
-	}
 	user = convertUserDTO(templateUser)
 	return
 }

+ 2 - 3
middleware/auth_middleware.go

@@ -39,15 +39,13 @@ func rd() *cache.RedisCache {
 
 var publicRoutes = []string{
 	"/auth/refreshToken",
-	"/auth/bind_gzh",
+	"/user/bind_gzh",
 }
 
 func AuthMiddleware() web.FilterFunc {
 	return func(ctx *context.Context) {
 		path := ctx.Input.URL()
 		logger.Info("请求路径:%v", path)
-		f := allowed(path)
-		fmt.Println(f)
 		if !allowed(path) {
 			rep := unAuthorized()
 			auth := ctx.Input.Header(authorization)
@@ -126,6 +124,7 @@ func allowed(path string) bool {
 		if strings.HasSuffix(p, "*") {
 
 			target := src[:len(src)-1]
+			fmt.Println("target:" + target)
 			if strings.HasPrefix(path, target) {
 				return true
 			}

+ 2 - 2
models/wx_token.go

@@ -7,7 +7,7 @@ type WxToken struct {
 }
 
 func RegisterWxToken(wxToken *WxToken) (err error) {
-	err = Main().Create(&wxToken).Error
+	err = Main().Table("wx_token").Create(&wxToken).Error
 	return
 }
 
@@ -18,6 +18,6 @@ func UpdateWxToken(accessToken string, expiresIn int64) (err error) {
 
 // GetById 根据id获取accessToken信息
 func GetWxTokenById() (info WxToken, err error) {
-	err = Main().Unscoped().Where("id", 0).First(&info).Error
+	err = Main().Table("wx_token").Unscoped().Where("id", 0).First(&info).Error
 	return
 }

+ 9 - 0
routers/commentsRouter.go

@@ -255,6 +255,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"],
+        beego.ControllerComments{
+            Method: "BindGzh",
+            Router: `/bind_gzh`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"] = append(beego.GlobalControllerRouter["eta/eta_mini_ht_api/controllers/user:UserController"],
         beego.ControllerComments{
             Method: "Feedback",

+ 26 - 10
service/auth/auth_service.go

@@ -208,8 +208,7 @@ func RefreshToken(code string) (token string, isBindMobile int, err error) {
 
 		//判断unionid是否存在
 		wxUser, unionErr := userService.GetTemplateUserByUnionId(wechatInfo.UnionId)
-
-		if unionErr == nil {
+		if unionErr != nil {
 			if unionErr == gorm.ErrRecordNotFound { //注册用户
 				isRegister = true
 			} else {
@@ -298,7 +297,7 @@ func BindXcxOpenId(userId int, openId string) (err error) {
 }
 
 // 绑定微信公众号
-func BindWxGzh(code string) (err error) {
+func BindWxGzh(code string) (isBind bool, err error) {
 	//注册用户
 	wxUser, err := GetWxUserInfo(code)
 	if err != nil {
@@ -306,7 +305,7 @@ func BindWxGzh(code string) (err error) {
 		err = exception.New(exception.TemplateUserNotFound)
 		return
 	}
-
+	logger.Info("GetWxUserInfo:")
 	if wxUser.ErrCode != 0 {
 		logger.Error("获取微信公众号用户信息失败" + wxUser.ErrMsg)
 		err = exception.New(exception.TemplateUserNotFound)
@@ -314,17 +313,20 @@ func BindWxGzh(code string) (err error) {
 	}
 
 	openId := wxUser.OpenId
-	wxUserDetail, er := GetWxUserDetail(openId)
-	if er != nil {
-		logger.Error("获取微信公众号用户详细信息失败" + wxUserDetail.ErrMsg)
+
+	logger.Info("openId:" + openId)
+	wxUserDetail, err := GetWxUserDetail(openId)
+	if err != nil {
+		logger.Error("获取微信公众号用户详细信息失败" + err.Error())
 		err = exception.New(exception.TemplateUserNotFound)
 		return
 	}
 
 	unionId := wxUserDetail.UnionID
 
-	user, err := userService.GetTemplateUserByGzhOpenId(openId)
+	logger.Info("unionId:" + unionId)
 	var isAdd bool
+	user, err := userService.GetTemplateUserByGzhOpenId(openId)
 	if err != nil {
 		if err == gorm.ErrRecordNotFound {
 			isAdd = true
@@ -334,6 +336,8 @@ func BindWxGzh(code string) (err error) {
 		}
 	}
 
+	logger.Info("IsAdd", isAdd)
+
 	if isAdd {
 		user.GzhOpenId = openId
 		user.UnionId = unionId
@@ -342,7 +346,7 @@ func BindWxGzh(code string) (err error) {
 		//判断unionid是否存在
 		wxUser, unionErr := userService.GetTemplateUserByUnionId(unionId)
 
-		if unionErr == nil {
+		if unionErr != nil {
 			if unionErr == gorm.ErrRecordNotFound { //注册用户
 				isRegister = true
 			} else {
@@ -350,11 +354,23 @@ func BindWxGzh(code string) (err error) {
 				return
 			}
 		}
+
+		logger.Info("isRegister", isRegister)
+
 		if isRegister {
 			err = userService.RegisterTemplateUser(&user)
+			if err != nil {
+				logger.Info("RegisterTemplateUser,Err" + err.Error())
+			}
 		} else { //修改微信小程序openid
-			err = userService.BindUserXcxOpenId(wxUser.Id, openId)
+			logger.Info("wxUser.Id:%d", wxUser.Id)
+			err = userService.BindUserGzhOpenId(wxUser.Id, openId)
+			if err != nil {
+				logger.Info("BindUserGzhOpenId,Err" + err.Error())
+			}
 		}
+	} else {
+		isBind = true
 	}
 	return
 }

+ 1 - 1
service/auth/wechat.go

@@ -39,7 +39,7 @@ func (wechat WechatAccessToken) GetAccessToken() (accessToken string, err error)
 	wxToken, err := models.GetWxTokenById()
 
 	var isRegister bool
-	if err != nil && err != gorm.ErrRecordNotFound {
+	if err != nil {
 		if err == gorm.ErrRecordNotFound {
 			isRegister = true
 		} else {