From f64dd9f191dff341b4eb430d7bacc44a3db9a279 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期五, 04 三月 2022 10:12:45 +0800
Subject: [PATCH] fix nil

---
 service/msgPush.go |  233 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 208 insertions(+), 25 deletions(-)

diff --git a/service/msgPush.go b/service/msgPush.go
index 05ebef6..d07d3de 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -181,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 {
@@ -194,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 {
@@ -248,6 +262,9 @@
 
 //瀵瑰凡娉ㄥ唽鐨勭敤鎴疯繘琛屾秷鎭帹閫併�傝皟鐢ㄦ鎺ュ彛鍓嶉渶璋冪敤鍒涘缓娑堟伅鎺ュ彛璁剧疆娑堟伅鍐呭
 func PushByAlias(title string, msg string, isTest bool) (bool, error, []string) {
+	if !isPushOpen() {
+		return false,errors.New("鎺ㄩ�佸紑鍏冲凡鍏抽棴"),nil
+	}
 	var aliasArr []string
 
 	pushUserM := make(map[string]string)
@@ -297,7 +314,7 @@
 	}
 	lenAS := len(aliasArr)
 	if  lenAS == 0 {
-		return false, errors.New("aliasArr is empty"),aliasArr
+		return false, errors.New("娌℃湁鎺ㄩ�佺洰鏍囷紝aliasArr is empty"),aliasArr
 	}
 	if isTest {
 		//鍙粰鍐呴儴鎵嬫満鍙锋帹
@@ -411,8 +428,12 @@
 	return false, errors.New("鎺ㄩ�佸け璐�")
 }
 
-func NightPush(title string, msg string) (bool, error, []string) {
+func NightPush(title string, msg string) (bool, error, []string, []string) {
+	if !isPushOpen() {
+		return false,errors.New("鎺ㄩ�佸紑鍏冲凡鍏抽棴"),nil,nil
+	}
 	var aliasArr []string
+	var carOwners []string
 
 	pushUserM := make(map[string]string)
 	var userE models.User
@@ -423,24 +444,59 @@
 		}
 	}
 	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+"()")
+						}
 					}
 				}
 			}
@@ -449,19 +505,146 @@
 
 	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 !isPushOpen() {
+		return false,errors.New("鎺ㄩ�佸紑鍏冲凡鍏抽棴"),nil
+	}
+	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 isPushOpen() bool {
+	b, err := beego.AppConfig.Bool("pushOpen")
+	fmt.Println("pushOpen:", b, "err:", err)
+	if err != nil {
+		return false
+	}
+	return b
+}
+
+/*
 func PushAll(title string, msg string) (bool,error) {
 	appId := beego.AppConfig.String("pushAppId")
 	baseUrl := beego.AppConfig.String("pushBaseUrl") + appId
@@ -546,7 +729,7 @@
 	}
 
 	return false, errors.New("鎺ㄩ�佸け璐�")
-}
+}*/
 
 func RefreshToken() (*TokenResult,error) {
 	appId := beego.AppConfig.String("pushAppId")
@@ -587,4 +770,4 @@
 		return &t, nil
 	}
 	return nil, errors.New("鑾峰彇unipush骞冲彴token澶辫触")
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0