xingzai hai 1 ano
pai
achega
7827ee69fb
Modificáronse 5 ficheiros con 181 adicións e 7 borrados
  1. 16 0
      models/cygx_user_record.go
  2. 19 4
      models/user_record.go
  3. 10 2
      models/wx_user.go
  4. 1 1
      models/wx_user_code.go
  5. 135 0
      services/wx_init.go

+ 16 - 0
models/cygx_user_record.go

@@ -61,3 +61,19 @@ func GetCygxUserRecordByOpenid(opendId string) (item *CygxUserRecord, err error)
 	err = o.Raw(sql, opendId).QueryRow(&item)
 	return
 }
+
+// 获取列表
+func GetCygxUserRecordyList() (items []*CygxUserRecord, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_user_record `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+// 更新关注信息
+func SetUserSubscribeByOpenid(openId string) (err error) {
+	o := orm.NewOrm()
+	sql := ` UPDATE cygx_user_record SET subscribe=1,subscribe_time=NOW() WHERE open_id=? `
+	_, err = o.Raw(sql, openId).Exec()
+	return
+}

+ 19 - 4
models/user_record.go

@@ -24,25 +24,40 @@ type UserRecord struct {
 	UserId         int       `description:"用户id"`
 }
 
-//根据openid获取用户关系
+// 根据openid获取用户关系
 func GetUserRecordByOpenId(openId string) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE open_id=? `
 	err = orm.NewOrm().Raw(sql, openId).QueryRow(&item)
 	return
 }
 
-//根据openid获取用户关系
-//4是查研观向   create_platform
+// 根据openid获取用户关系
+// 4是查研观向   create_platform
 func GetUserRecordByUnionId(unionId string) (item *UserRecord, err error) {
 	sql := `SELECT * FROM user_record WHERE union_id=? AND create_platform = 4  `
 	err = orm.NewOrm().Raw(sql, unionId).QueryRow(&item)
 	return
 }
 
-//根据openid解除绑定用户关系
+// 根据openid解除绑定用户关系
 func UnBindUserRecordByOpenid(openId string) (err error) {
 	o := orm.NewOrm()
 	msql := ` UPDATE user_record SET user_id = 0,bind_account="" WHERE open_id = ? `
 	_, err = o.Raw(msql, openId).Exec()
 	return
 }
+
+// 根据用户id和平台id获取用户关系
+func GetUserRecordByUserOpenId(open_id string) (item *UserRecord, err error) {
+	sql := `SELECT
+	u.*
+FROM
+	cygx_user_record AS c
+	INNER JOIN user_record  AS u ON c.union_id = u.union_id 
+WHERE
+	c.open_id = ? 
+	AND u.bind_account != ''
+	GROUP BY u.union_id`
+	err = orm.NewOrm().Raw(sql, open_id).QueryRow(&item)
+	return
+}

+ 10 - 2
models/wx_user.go

@@ -116,7 +116,7 @@ func GetWxUserItemByUserUnionId(unionId string) (item *WxUserItem, err error) {
 	return
 }
 
-//根据用户UnionId取相关信息
+// 根据用户UnionId取相关信息
 func GetWxUserAouthByUnionId(UnionId string) (item *WxUserItem, err error) {
 	sql := `SELECT
 			a.*,
@@ -136,7 +136,7 @@ func GetWxUserAouthByUnionId(UnionId string) (item *WxUserItem, err error) {
 	return
 }
 
-//根据用户手机号获取相关信息
+// 根据用户手机号获取相关信息
 func GetWxUserItemByUserMobile(mobile string) (item *WxUserItem, err error) {
 	sql := `SELECT
 			a.user_id,
@@ -160,3 +160,11 @@ func GetWxUserItemByUserMobile(mobile string) (item *WxUserItem, err error) {
 	err = orm.NewOrm().Raw(sql, mobile).QueryRow(&item)
 	return
 }
+
+// 获取这个公司下面所有用户的手机号
+func SetUserSubscribeByMobile(mobile string) (err error) {
+	o := orm.NewOrm()
+	sql := ` UPDATE wx_user SET cygx_subscribe=1,cygx_subscribe_time=NOW() WHERE mobile=? `
+	_, err = o.Raw(sql, mobile).Exec()
+	return
+}

+ 1 - 1
models/wx_user_code.go

@@ -16,7 +16,7 @@ type WxUserCode struct {
 	CreateTime     time.Time
 }
 
-//添加联系人日志信息
+// 添加联系人日志信息
 func AddWxUserCode(item *WxUserCode) (lastId int64, err error) {
 	o := orm.NewOrm()
 	lastId, err = o.Insert(item)

+ 135 - 0
services/wx_init.go

@@ -0,0 +1,135 @@
+package services
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+	"github.com/rdlucklib/rdluck_tools/http"
+	"hongze/hongze_cygxzs/models"
+	"hongze/hongze_cygxzs/utils"
+	"time"
+)
+
+func GetWxUsersSubscribeCygx() {
+
+	list, _ := models.GetCygxUserRecordyList()
+	unionIdMap := make(map[string]string)
+
+	for _, v := range list {
+		unionIdMap[v.OpenId] = v.OpenId
+	}
+	i := 0
+	openIdList := WxUsersGetV1()
+	fmt.Println("openIdList:", len(openIdList))
+	time.Sleep(3 * time.Second)
+	for _, v := range openIdList {
+		//if v != "oIwGm5mDnpMyur-v5LHdqcdRkfBU" {
+		//	continue
+		//}
+		err := models.SetUserSubscribeByOpenid(v)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("SetUserSubscribeByOpenid Err:" + err.Error())
+			return
+		}
+		detail, err := models.GetUserRecordByUserOpenId(v)
+
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("GetUserRecordByUserOpenId Err:" + err.Error())
+			return
+		}
+		if detail != nil {
+			err = models.SetUserSubscribeByMobile(detail.BindAccount)
+			if err != nil && err.Error() != utils.ErrNoRow() {
+				fmt.Println("SetUserSubscribeByMobile Err:" + err.Error())
+				fmt.Println(detail.BindAccount)
+				return
+			}
+
+		}
+
+		openId := v
+
+		i++
+		fmt.Println(openId, i)
+		//total, err := models.GetCygxUserRecordCount(openId)
+		//if err != nil {
+		//	utils.FileLog.Info("GetCygxUserRecordCount:" + err.Error())
+		//}
+		//var unionId string
+		//if unionIdMap[v] == "" {
+		//	fmt.Println("添加")
+		//	accessToken, err := GetWxAccessTokenByXzs()
+		//	if err != nil {
+		//		utils.FileLog.Info("accessToken:" + err.Error())
+		//	}
+		//	if accessToken == "" {
+		//		utils.FileLog.Info("access_token 为空 openId:" + openId)
+		//	}
+		//	wxUserInfo, err := WxGetUserInfo(openId, accessToken)
+		//	if err != nil {
+		//		utils.FileLog.Info("accessToken:" + err.Error())
+		//		return
+		//	}
+		//	if wxUserInfo.Errcode != 0 {
+		//		userInfoJson, _ := json.Marshal(wxUserInfo)
+		//		utils.FileLog.Info("获取用户信息失败,err:" + string(userInfoJson))
+		//	}
+		//	unionId = wxUserInfo.Unionid
+		//	if unionId != "" {
+		//		AddCygxUserRecord(wxUserInfo)
+		//	}
+		//}
+	}
+}
+
+type WxUsers struct {
+	WxBase
+	Total int
+	Count int
+	Data  struct {
+		Openid []string
+	}
+	NextOpenid string `json:"next_openid"`
+}
+
+// 微信接口基础返回数据
+type WxBase struct {
+	Errcode int
+	Errmsg  string
+}
+
+func WxUsersGetV1() (openIdList []string) {
+	accessToken := "68_Vybgr0jXdiqCJW7NjEROyrSAGT-txiflR9QSKn-9BRo-dAWsuDwwh-Adn2MUqRgrWDwusQx4F_IdB5aWCtFKAvJ6roWrSbP0F98PIMX1drK0Dv9xpSbKsS3PCkUMGNcAIABVC"
+	//关注的openid切片
+	openIdList = make([]string, 0)
+	//下一个openid
+	nextOpenid := ""
+
+QUERY_WX:
+	url := "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + accessToken + "&next_openid=" + nextOpenid
+	result, err := http.Get(url)
+	if err != nil {
+		utils.FileLog.Info("GetUser Err:", err.Error())
+		return
+	}
+	item := new(WxUsers)
+	err = json.Unmarshal(result, &item)
+	if err != nil {
+		fmt.Println("Unmarshal Err:", err.Error())
+		return
+	}
+	if item.Errcode != 0 {
+		utils.FileLog.Info("微信接口返回异常 Err:", item.Errmsg)
+		return
+	}
+	err = errors.New(item.Errmsg)
+
+	openIdList = append(openIdList, item.Data.Openid...)
+
+	//如果数量大于10000条,同时下个openid不为空,那么继续查询
+	if item.Count >= 10000 && item.NextOpenid != "" {
+		nextOpenid = item.NextOpenid
+		goto QUERY_WX
+	}
+	return openIdList
+}