From f58d6c7e121dc6a16f6b1e12e5beba1e6ce1b992 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 08 九月 2020 15:11:05 +0800
Subject: [PATCH] Push2Manager add isTest
---
service/msgPush.go | 249 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 220 insertions(+), 29 deletions(-)
diff --git a/service/msgPush.go b/service/msgPush.go
index 6e52527..da1455a 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -7,6 +7,7 @@
"errors"
"fmt"
"github.com/astaxie/beego"
+ "strings"
"sync"
"time"
)
@@ -180,6 +181,28 @@
}
url := baseUrl+"/push/list/message"
intent := "intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=uni.UNIEDF0B5C/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title="+title+";S.content="+msg+";S.payload=test;end"
+ androidPush := map[string]map[string]map[string]string {
+ "ups": {
+ "notification": {
+ "title": title,
+ "body": msg,
+ "big_text": msg,
+ "click_type": "intent",
+ "intent": intent,
+ },
+ },
+ }
+ iosPush := map[string]interface{}{
+ "type":"notify",
+ "payload": "鑲茶嫳涓鍋滆溅",
+ "aps":map[string]interface{}{
+ "alert":map[string]string{
+ "title": title,
+ "body": msg,
+ },
+ "content-available":0,
+ },
+ }
reqBody := map[string]interface{} {
"request_id": time.Now().Format("20060102150405") + util.GenValidateCode(6),
"settings":map[string]int {
@@ -193,17 +216,9 @@
"intent": intent,
},
},
- "push_channel": map[string]map[string]map[string]map[string]string {
- "android": {
- "ups": {
- "notification": {
- "title": title,
- "body": msg,
- "click_type": "intent",
- "intent": intent,
- },
- },
- },
+ "push_channel": map[string]interface{} {
+ "android": androidPush,
+ "ios":iosPush,
},
}
header := map[string]string {
@@ -246,7 +261,7 @@
}
//瀵瑰凡娉ㄥ唽鐨勭敤鎴疯繘琛屾秷鎭帹閫併�傝皟鐢ㄦ鎺ュ彛鍓嶉渶璋冪敤鍒涘缓娑堟伅鎺ュ彛璁剧疆娑堟伅鍐呭
-func PushByAlias(title string, msg string) (bool, error, []string) {
+func PushByAlias(title string, msg string, isTest bool) (bool, error, []string) {
var aliasArr []string
pushUserM := make(map[string]string)
@@ -265,16 +280,22 @@
carPersons := csv.GetVehicleListByPerson("")
if carPersons != nil {
for _, cp := range carPersons {
- carPersonM[cp.PlateNo] = cp.PersonId
+ ncPlateNo := preDealPlateNo(cp.PlateNo) //鍘绘帀姹夊瓧锛孌鍜�0鏇挎崲鎴�*
+ if ncPlateNo != "" {
+ carPersonM[ncPlateNo] = cp.PersonId
+ }
}
}
delPersonIdM := make(map[string]string)
spaceNos := csv.FindSpaceNo("")
for _,sn := range spaceNos {
if sn.State == 1 && sn.PlateNo != "" { //宸茬粡鎶婅溅鍋滃埌鍋滆溅鍦虹殑杞︿富锛屼笉鍐嶆帹閫佹秷鎭�
- if pId,ok := carPersonM[sn.PlateNo];ok {
- delPersonIdM[pId] = pId
- delete(carPersonM, sn.PlateNo)
+ realPlateNo := preDealPlateNo(sn.PlateNo)
+ if realPlateNo != "" {
+ if pId,ok := carPersonM[realPlateNo];ok {
+ delPersonIdM[pId] = pId
+ delete(carPersonM, realPlateNo)
+ }
}
}
}
@@ -290,7 +311,15 @@
}
lenAS := len(aliasArr)
if lenAS == 0 {
- return false, errors.New("aliasArr is empty"),aliasArr
+ return false, errors.New("娌℃湁鎺ㄩ�佺洰鏍囷紝aliasArr is empty"),aliasArr
+ }
+ if isTest {
+ //鍙粰鍐呴儴鎵嬫満鍙锋帹
+ testPhones := beego.AppConfig.String("testPushPhones")
+ if testPhones == "" {
+ return false, errors.New("test push aliasArr is empty"),aliasArr
+ }
+ aliasArr = strings.Split(testPhones, ",")
}
cResult, taskId, ce := createPushMsg(title, msg)
@@ -334,6 +363,18 @@
}
return false, errors.New("鎺ㄩ�佸け璐�"),aliasArr
+}
+
+//棰勫鐞嗚溅鐗屽彿锛屽幓闄ら涓眽瀛楋紝浠ュ強蹇界暐D鍜�0
+func preDealPlateNo(pn string) string {
+ if pn != "" {
+ r := []rune(pn)
+ ncStr := string(r[1:])
+ newPlateNo := strings.ReplaceAll(ncStr, "D", "*")
+ newPlateNo = strings.ReplaceAll(newPlateNo, "0", "*")
+ return newPlateNo
+ }
+ return ""
}
func doPush(taskId string, aliasArr []string) (bool,error) {
@@ -384,8 +425,9 @@
return false, errors.New("鎺ㄩ�佸け璐�")
}
-func NightPush(title string, msg string) (bool, error, []string) {
+func NightPush(title string, msg string) (bool, error, []string, []string) {
var aliasArr []string
+ var carOwners []string
pushUserM := make(map[string]string)
var userE models.User
@@ -396,24 +438,58 @@
}
}
if len(pushUserM) == 0 {
- return true,nil, aliasArr
+ return false, errors.New("len(pushUserM) == 0"), aliasArr, carOwners
}
carPersonM := make(map[string]string)
csv := NewCarService()
carPersons := csv.GetVehicleListByPerson("")
if carPersons != nil {
for _, cp := range carPersons {
- carPersonM[cp.PlateNo] = cp.PersonId
+ cnPlateNo := preDealPlateNo(cp.PlateNo)
+ if cnPlateNo != "" {
+ carPersonM[cnPlateNo] = cp.PersonId
+ }
}
}
+ //澶滈棿鏌愪簺棰嗗鐨勮溅鍙互鍋滃湪杞﹀簱鍐�
+ var vipPlateNoArr []string
+ vipArr := strings.Split(beego.AppConfig.String("nightVipPlateNos"), ",")
+ if vipArr != nil && len(vipArr) >0 {
+ for _,po := range vipArr {
+ if po != "" {
+ cnPo := preDealPlateNo(po)
+ if cnPo != "" {
+ vipPlateNoArr = append(vipPlateNoArr, cnPo)
+ }
+ }
+ }
+ }
+
+ hikPersonMap := csv.GetHikPersonMap()
+
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 { //姝や汉宸叉敞鍐屽埌绯荤粺,骞朵笖杞︿笉鍦ㄥ仠杞﹀簱鍐�
- if uc.Exist(phoneNum) {
- aliasArr = append(aliasArr, phoneNum)
+ if sn.State == 1 { //杞﹀皻鍦ㄥ仠杞﹀満鐨勮溅鐗�
+ inCnPlateNo := preDealPlateNo(sn.PlateNo)
+ if inCnPlateNo != "" {
+ if !isVipCar(inCnPlateNo, vipPlateNoArr) {
+ if personId,ok := carPersonM[inCnPlateNo];ok {
+ if phoneNum,ok := pushUserM[personId]; ok {
+ if uc.Exist(phoneNum) {
+ aliasArr = append(aliasArr, phoneNum)
+ }
+ }
+
+ if v,ex := hikPersonMap[personId]; ex {
+ carOwners = append(carOwners, sn.PlateNo+"("+v.PersonName+")")
+ }
+ } else { //鎵句笉鍒拌溅涓伙紝鍗宠涓轰复鏃惰溅锛屽皢杞︾墝浣滀负杞︿富濮撳悕鎺ㄩ��
+ if sn.PlateNo == "鏃犺溅鐗�" {
+ carOwners = append(carOwners, sn.PlateNo)
+ } else {
+ carOwners = append(carOwners, sn.PlateNo+"()")
+ }
}
}
}
@@ -422,19 +498,134 @@
if len(aliasArr) == 0 {
fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty")
- return true, nil, aliasArr
+ return false, errors.New("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty"), aliasArr, carOwners
}
cResult, taskId, ce := createPushMsg(title, msg)
if !cResult {
fmt.Println("createPushMsg taskId:", taskId, "err:", ce)
- return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�"), aliasArr
+ return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�"), aliasArr, carOwners
}
b,e := doPush(taskId, aliasArr)
- return b,e, aliasArr
+ return b,e, aliasArr, carOwners
}
+
+//姝ゆ柟娉曞仛娴嬭瘯浣跨敤
+//鑾峰彇鍋滅暀鍦ㄨ溅搴撳唴杞︿富鐨勫鍚嶏紝鎵句笉鍒板鍚嶈繑鍥炶繖鐗�
+func GetLeftCarOwners() []string {
+ var carOwners []string
+ pushUserM := make(map[string]string)
+ var userE models.User
+ allUsers, _ := userE.GetAllUsers()
+ if allUsers != nil {
+ for _,u := range allUsers {
+ pushUserM[u.Id] = u.PhoneNum
+ }
+ }
+
+ carPersonM := make(map[string]string)
+ csv := NewCarService()
+ carPersons := csv.GetVehicleListByPerson("")
+ if carPersons != nil {
+ for _, cp := range carPersons {
+ cnPlateNo := preDealPlateNo(cp.PlateNo)
+ if cnPlateNo != "" {
+ carPersonM[cnPlateNo] = cp.PersonId
+ }
+ }
+ }
+ //澶滈棿鏌愪簺棰嗗鐨勮溅鍙互鍋滃湪杞﹀簱鍐�
+ var vipPlateNoArr []string
+ vipArr := strings.Split(beego.AppConfig.String("nightVipPlateNos"), ",")
+ if vipArr != nil && len(vipArr) >0 {
+ for _,po := range vipArr {
+ if po != "" {
+ cnPo := preDealPlateNo(po)
+ if cnPo != "" {
+ vipPlateNoArr = append(vipPlateNoArr, cnPo)
+ }
+ }
+ }
+ }
+
+ hikPersonMap := csv.GetHikPersonMap()
+
+ spaceNos := csv.FindSpaceNo("")
+ for _,sn := range spaceNos {
+ if sn.State == 1 { //杞﹀皻鍦ㄥ仠杞﹀満鐨勮溅鐗�
+ inCnPlateNo := preDealPlateNo(sn.PlateNo)
+ if inCnPlateNo != "" {
+ if !isVipCar(inCnPlateNo, vipPlateNoArr) {
+ if personId,ok := carPersonM[inCnPlateNo];ok {
+
+ if v,ex := hikPersonMap[personId]; ex {
+ carOwners = append(carOwners, sn.PlateNo+"("+v.PersonName+")")
+ }
+ } else { //鎵句笉鍒拌溅涓伙紝鍗宠涓轰复鏃惰溅锛屽皢杞︾墝浣滀负杞︿富濮撳悕鎺ㄩ��
+ if sn.PlateNo == "鏃犺溅鐗�" {
+ carOwners = append(carOwners, sn.PlateNo)
+ } else {
+ carOwners = append(carOwners, sn.PlateNo+"()")
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return carOwners
+}
+
+//vip杞︿富锛屼笉鎺ユ敹璇风寮�鐨勯�氱煡锛屼篃涓嶉�氱煡绠$悊鍛樿繖涓溅杩樺湪杞﹀簱鍐�
+func isVipCar(targetPlateNo string, vipPlateNoArr []string) bool {
+ b := false
+ if vipPlateNoArr != nil {
+ for _,v := range vipPlateNoArr {
+ if targetPlateNo == v {
+ b = true
+ break
+ }
+ }
+ }
+ return b
+}
+
+//濡傛灉澶滈棿鏈夌粰杞﹀簱鍐呯殑杞︿富鎺ㄩ�佲�滆灏藉揩椹剁鈥濈殑娑堟伅锛屽垯鍛婄煡绠$悊鍛� 鏈夊摢浜涜溅灏氬仠鍦ㄨ溅搴撳唴
+func Push2Manager(title string, msg string, isTest bool) (bool, error, []string) {
+ if len(msg) > 256 {
+ fmt.Println("澶滈棿鍋滅暀杞﹀お澶氾紝message:", msg)
+
+ r := []rune(msg)
+ msg = string(r[:125])+"..."
+ }
+ managers := ""
+ if isTest {
+ managers = beego.AppConfig.String("testPushPhones")
+ } else {
+ managers = beego.AppConfig.String("nightManagerPhones")
+ }
+ if managers == "" {
+ return false, errors.New("澶滈棿鎺ㄩ�佺鐞嗗憳鎵嬫満鍙锋湭閰嶇疆"), []string{}
+ }
+ managerArr := strings.Split(managers, ",")
+ if len(managerArr) == 0 {
+ fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,managerArr is empty")
+ return false, errors.New("绠$悊鍛樻墜鏈哄彿鏈厤缃�"), managerArr
+ }
+
+ cResult, taskId, ce := createPushMsg(title, msg)
+ if !cResult {
+ fmt.Println("createPushMsg taskId:", taskId, "err:", ce)
+ return false, errors.New("鍒涘缓鎺ㄩ�佸墠缃秷鎭け璐�"), managerArr
+ }
+
+ b,e := doPush(taskId, managerArr)
+ return b,e, managerArr
+}
+
+/*
func PushAll(title string, msg string) (bool,error) {
appId := beego.AppConfig.String("pushAppId")
baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
@@ -519,7 +710,7 @@
}
return false, errors.New("鎺ㄩ�佸け璐�")
-}
+}*/
func RefreshToken() (*TokenResult,error) {
appId := beego.AppConfig.String("pushAppId")
--
Gitblit v1.8.0