xingzai 2 жил өмнө
parent
commit
faf18cf254

+ 70 - 0
controllers/wechat.go

@@ -2,6 +2,8 @@ package controllers
 
 import (
 	"encoding/json"
+	"encoding/xml"
+	"fmt"
 	"hongze/hongze_cygxzs/models"
 	"hongze/hongze_cygxzs/services"
 	"hongze/hongze_cygxzs/utils"
@@ -267,3 +269,71 @@ func (this *WechatController) UserInfo() {
 	br.Msg = "获取成功"
 	br.Data = resp
 }
+
+// @Title 微信获取签名接口
+// @Description 微信获取签名接口
+// @Param   Url   query   string  true       "url地址"
+// @Success 200 {object} models.WechatSign
+// @router /notify [get,post]
+func (this *WechatCommonController) Notify() {
+	echostr := this.GetString("echostr")
+	method := this.Ctx.Input.Method()
+	if method == "POST" {
+		body := this.Ctx.Input.RequestBody
+		utils.FileLog.Info("wechat notify:" + string(body))
+		item := new(models.Notify)
+		err := xml.Unmarshal(body, &item)
+		if err != nil {
+			utils.FileLog.Info("xml.Unmarshal:" + err.Error())
+		}
+		contactMsg := "感谢关注弘则研究。\r\n公司地址:上海市世纪大道210号21世纪中心大厦12层1206室\r\n\r\n业务合作:\r\n电话:86-21-61645300\r\n邮箱:service@hzinsights.com\r\n邮编:200120\r\n\r\n海外业务:\r\n邮箱:yyu@hzinsights.com  "
+
+		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)
+		xmlTpl = fmt.Sprintf(xmlTpl, openId, utils.WxId, createTime, contactMsg)
+		wxUser, err := models.GetUserDetailBuOpenid(openId)
+		if err != nil {
+			utils.FileLog.Info("GetUserDetailBuOpenid:" + err.Error())
+		}
+		if wxUser == nil {
+			utils.FileLog.Info("用户不存在openId:" + openId)
+			return
+		}
+		if item.MsgType == "event" {
+			switch item.Event {
+			case "subscribe":
+				fmt.Println("关注")
+				go models.UserSubscribe(1, wxUser.UserId)
+				break
+			case "unsubscribe":
+				fmt.Println("取消关注")
+				go models.UserSubscribe(0, wxUser.UserId)
+				break
+			case "CLICK":
+				returnResult = xmlTpl
+				break
+			default:
+				utils.FileLog.Info("wechat notify event:" + item.Event)
+			}
+			this.Ctx.WriteString(xmlTpl)
+		} else if item.MsgType == "text" {
+			returnResult = xmlTpl
+			this.Ctx.WriteString(returnResult)
+		} else {
+			returnResult = xmlTpl
+		}
+		this.Ctx.WriteString(returnResult)
+	} else {
+		this.Ctx.WriteString(echostr)
+	}
+}

+ 26 - 1
models/user.go

@@ -9,6 +9,7 @@ import (
 type UserDetail struct {
 	Headimgurl          string `description:"用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空"`
 	Mobile              string `description:"手机号码"`
+	UserId              int    `description:"用户ID"`
 	Email               string `description:"邮箱"`
 	NickName            string `description:"用户昵称"`
 	RealName            string `description:"用户实际名称"`
@@ -152,7 +153,7 @@ type CountryCodeItem struct {
 	CountryCode string `description:"区号"`
 }
 
-//修改外呼手机号
+// 修改外呼手机号
 type OutboundMobileItem struct {
 	OutboundMobile      string `description:"外呼手机号"`
 	OutboundCountryCode string `description:"外呼手机号区号"`
@@ -213,3 +214,27 @@ func GetCompanyPermissionId(companyId int) (permissionId string, err error) {
 	err = o.Raw(sql, companyId).QueryRow(&permissionId)
 	return
 }
+
+// 根据Openid获取用户详情
+func GetUserDetailBuOpenid(opendId string) (item *UserDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			ur.user_id 
+		FROM
+			cygx_user_record AS cr
+			INNER JOIN user_record AS ur ON ur.union_id = cr.union_id 
+		WHERE
+			1 = 1 
+			AND ur.user_id != '' 
+			AND cr.open_id = ?
+			LIMIT 1 `
+	err = o.Raw(sql, opendId).QueryRow(&item)
+	return
+}
+
+func UserSubscribe(subscribeType, userId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE wx_user SET cygx_subscribe=?,cygx_subscribe_time=NOW() WHERE user_id = ? `
+	_, err = o.Raw(sql, subscribeType, userId).Exec()
+	return
+}

+ 10 - 0
models/wechat.go

@@ -55,3 +55,13 @@ type WxCheckContentJson struct {
 	Errcode      int    `json:"errcode"`
 	Errmsg       string `json:"errmsg"`
 }
+
+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"`
+}

+ 64 - 0
routers/commentsRouter.go

@@ -0,0 +1,64 @@
+package routers
+
+import (
+	beego "github.com/beego/beego/v2/server/web"
+	"github.com/beego/beego/v2/server/web/context/param"
+)
+
+func init() {
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:UserController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:UserController"],
+        beego.ControllerComments{
+            Method: "ChooseDetail",
+            Router: `/choose/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:UserController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:UserController"],
+        beego.ControllerComments{
+            Method: "ChooseSubmit",
+            Router: `/choose/submit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"],
+        beego.ControllerComments{
+            Method: "GetWxSign",
+            Router: `/getWxSign`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"],
+        beego.ControllerComments{
+            Method: "WechatLoginByxzs",
+            Router: `/loginByxzs`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatCommonController"],
+        beego.ControllerComments{
+            Method: "Notify",
+            Router: `/notify`,
+            AllowHTTPMethods: []string{"get","post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatController"] = append(beego.GlobalControllerRouter["hongze/hongze_cygxzs/controllers:WechatController"],
+        beego.ControllerComments{
+            Method: "UserInfo",
+            Router: `/user/detail`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+}

+ 8 - 1
utils/config.go

@@ -17,7 +17,7 @@ var (
 	Re          error        //redis错误
 )
 
-//微信配置信息
+// 微信配置信息
 var (
 	WxId        string //微信原始ID
 	WxAppId     string //查研观向小程序
@@ -28,6 +28,11 @@ var (
 	HeadimgurlDefault string //默认头像
 )
 
+var (
+	ClassifyArr   []string
+	ReportNameArr []string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -69,9 +74,11 @@ func init() {
 	if RunMode == "release" {
 		WxPublicAppId = "wxb7cb8a15abad5b8e"                   //查研观向小助手
 		WxPublicAppSecret = "f425ba2863084249722af1e2a5cfffd3" //查研观向小助手
+		WxId = "gh_ef7675f65027"                               //查研观向小助手公众号原始ID
 	} else {
 		WxPublicAppId = "wx9b5d7291e581233a"                   //弘则投研公众号 开发者ID(AppID)
 		WxPublicAppSecret = "f4d52e34021eee262dce9682b31f8861" //弘则投研公众号秘钥
+		WxId = "gh_5dc508325c6f"                               //弘则投研公众号原始ID
 	}
 	HeadimgurlDefault = "https://hongze.oss-cn-shanghai.aliyuncs.com/static/images/202202/20220225/XFBBOUmDC5AXkfxnHiuqKpPtoofH.png"
 }