From c6b1cadc0214c6791a5c5bcc62ab57601e38f457 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期四, 13 八月 2020 11:31:08 +0800
Subject: [PATCH] add db restriction
---
service/msgPush.go | 203 ++++++++++++++++++++++++++++----------------------
1 files changed, 112 insertions(+), 91 deletions(-)
diff --git a/service/msgPush.go b/service/msgPush.go
index 77c58bc..2abe367 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -46,45 +46,65 @@
}()
}
-//瑙g粦鎵�鏈変笌璇ュ埆鍚嶇粦瀹氱殑cid
-//func UnbindAlias(alias string) (bool, error) {
-// appId := beego.AppConfig.String("pushAppId")
-// baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
-// retryTimes := 0
-//ReTry:
-// token := getCacheToken()
-// if token == "" {
-// return false, errors.New("token is nil")
-// }
-// url := baseUrl + "/user/alias/"+alias
-// header := map[string]string {
-// "token": token,
-// }
-// b,err := util.DoDeleteRequest(url, util.CONTENT_TYPE_UTF8_JSON, nil, header)
-// if err !=nil {
-// fmt.Println("DoDelete err:", err)
-// return false, err
-// }
-// var result PushResult
-// err = json.Unmarshal(b, &result)
-// if err != nil {
-// fmt.Println("unmarshal err:", err)
-// return false, err
-// }
-// if result.Code == 0 { //瑙g粦鎴愬姛
-// return true, nil
-// } else if result.Code == 10001 { //token杩囨湡
-// if retryTimes <=3 {
-// newToken, err := RefreshToken()
-// if err == nil {
-// updateToken(newToken)
-// retryTimes++
-// goto ReTry
-// }
-// }
-// }
-// return false, errors.New(result.Msg)
-//}
+//鎵归噺瑙g粦鍒悕
+func UnbindAlias(cid string) (bool, error) {
+ var uc models.UserClient
+ ucList := uc.GetByCid(cid)
+ if ucList ==nil {
+ return true,errors.New("ucList is nil")
+ }
+ var aliasArr []string
+ for _,als := range ucList {
+ aliasArr = append(aliasArr, als.PhoneNum)
+ }
+ appId := beego.AppConfig.String("pushAppId")
+ baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
+ retryTimes := 0
+ReTry:
+ token := getCacheToken()
+ if token == "" {
+ return false, errors.New("token is nil")
+ }
+ url := baseUrl + "/user/alias"
+ header := map[string]string {
+ "token": token,
+ }
+ caArr := make([]map[string]string, 0)
+ for _,as := range aliasArr {
+ caArr = append(caArr, map[string]string{
+ "cid": cid,
+ "alias": as,
+ })
+ }
+
+ reqBody := map[string]interface{}{
+ "data_list": caArr,
+ }
+ b,err := util.DoDeleteRequest(url, util.CONTENT_TYPE_UTF8_JSON, reqBody, header)
+ if err !=nil {
+ fmt.Println("DoDelete err:", err)
+ return false, err
+ }
+ var result PushResult
+ err = json.Unmarshal(b, &result)
+ if err != nil {
+ fmt.Println("unmarshal err:", err)
+ return false, err
+ }
+ if result.Code == 0 { //瑙g粦鎴愬姛
+ return true, nil
+ } else if result.Code == 10001 { //token杩囨湡
+ if retryTimes <=3 {
+ newToken, err := RefreshToken()
+ if err == nil {
+ updateToken(newToken)
+ retryTimes++
+ goto ReTry
+ }
+ }
+ }
+ return false, errors.New(result.Msg)
+}
//涓�涓埆鍚嶆渶澶氬厑璁哥粦瀹�10涓猚id
func BindAlias(cid, alias string) (bool, error) {
@@ -248,6 +268,7 @@
carPersonM[cp.PlateNo] = cp.PersonId
}
}
+ fmt.Println("carPersonM:", carPersonM)
delPersonIdM := make(map[string]string)
spaceNos := csv.FindSpaceNo("")
for _,sn := range spaceNos {
@@ -255,18 +276,23 @@
if pId,ok := carPersonM[sn.PlateNo];ok {
delPersonIdM[pId] = pId
delete(carPersonM, sn.PlateNo)
+ fmt.Println("delete personId:", pId, "plateNo:", sn.PlateNo)
}
}
}
- fmt.Println("len(carPersonM):", len(carPersonM), "len(pushUserM):", len(pushUserM))
- for personId,_ := range carPersonM {
+ fmt.Println("len(carPersonM):", len(carPersonM), "len(pushUserM):", len(pushUserM),"delPersonIdM:", delPersonIdM)
+ var uc models.UserClient
+ for _,personId := range carPersonM {
if phoneNum,ok := pushUserM[personId]; ok { //姝や汉宸叉敞鍐屽埌绯荤粺,骞朵笖杞︿笉鍦ㄥ仠杞﹀簱鍐�
if _,in := delPersonIdM[personId];!in {
- aliasArr = append(aliasArr, phoneNum)
+ if uc.Exist(phoneNum) {
+ aliasArr = append(aliasArr, phoneNum)
+ }
}
}
}
- if len(aliasArr) == 0 {
+ lenAS := len(aliasArr)
+ if lenAS == 0 {
return true, errors.New("aliasArr is empty")
} else {
fmt.Println("PushByAlias arr:", aliasArr)
@@ -278,6 +304,44 @@
return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
}
+ //alias 鍗曟鎺ㄩ�侀暱搴︿笂闄愭槸200
+ pushTime := 1
+ if lenAS > 200 {
+ pushTime = lenAS / 200
+ if lenAS % 200 >0 {
+ pushTime++
+ }
+ }
+
+ isSuccess := false
+ for i:=0;i<pushTime;i++ {
+ var curAliasArr []string
+ start := i*200
+ end := (i+1)*200 -1
+ if i<pushTime-1 {
+ curAliasArr = aliasArr[start:end]
+ } else {
+ //鍙栧墿浣欐墍鏈�
+ curAliasArr = aliasArr[start:]
+ }
+ if len(curAliasArr) >0 {
+ flag, e := doPush(taskId, curAliasArr)
+ if e != nil {
+ fmt.Println("doPush err:", e)
+ }
+ if flag {
+ isSuccess = true
+ }
+ }
+ }
+ if isSuccess {
+ return true, nil
+ }
+
+ return false, errors.New("鎺ㄩ�佸け璐�")
+}
+
+func doPush(taskId string, aliasArr []string) (bool,error) {
appId := beego.AppConfig.String("pushAppId")
baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
retryTimes := 0
@@ -322,7 +386,6 @@
} else {
fmt.Println("鎺ㄩ�佺粨鏋�:", result)
}
-
return false, errors.New("鎺ㄩ�佸け璐�")
}
@@ -349,11 +412,14 @@
}
}
spaceNos := csv.FindSpaceNo("")
+ var uc models.UserClient
for _,sn := range spaceNos {
if sn.State == 1 && sn.PlateNo != "" { //宸茬粡鎶婅溅鍋滃埌鍋滆溅鍦虹殑杞︿富锛屼笉鍐嶆帹閫佹秷鎭�
if personId,ok := carPersonM[sn.PlateNo];ok {
if phoneNum,ok := pushUserM[personId]; ok { //姝や汉宸叉敞鍐屽埌绯荤粺,骞朵笖杞︿笉鍦ㄥ仠杞﹀簱鍐�
- aliasArr = append(aliasArr, phoneNum)
+ if uc.Exist(phoneNum) {
+ aliasArr = append(aliasArr, phoneNum)
+ }
}
}
}
@@ -370,52 +436,7 @@
return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�")
}
- appId := beego.AppConfig.String("pushAppId")
- baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
- retryTimes := 0
-ReTry:
- token := getCacheToken()
- if token == "" {
- return false, errors.New("token is nil")
- }
- url := baseUrl+"/push/list/alias"
- reqBody := map[string]interface{} {
- "audience":map[string]interface{}{
- "alias": aliasArr,
- },
- "taskid": taskId,
- "is_async": true,
- }
- header := map[string]string {
- "token": token,
- }
- b, err := util.DoPostRequest(url, util.CONTENT_TYPE_UTF8_JSON, reqBody, nil, header)
- if err !=nil {
- fmt.Println("DoPost err:", err)
- return false, err
- }
- var result PushResult
- err = json.Unmarshal(b, &result)
- if err != nil {
- fmt.Println("unmarshal err:", err)
- return false, err
- }
- if result.Code == 0 {
- return true, nil
- } else if result.Code == 10001 { //token杩囨湡
- if retryTimes <=3 {
- newToken, err := RefreshToken()
- if err == nil {
- updateToken(newToken)
- retryTimes++
- goto ReTry
- }
- }
- } else {
- fmt.Println("鎺ㄩ�佺粨鏋�:", result)
- }
-
- return false, errors.New("鎺ㄩ�佸け璐�")
+ return doPush(taskId, aliasArr)
}
func PushAll(title string, msg string) (bool,error) {
--
Gitblit v1.8.0