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 | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 157 insertions(+), 16 deletions(-) diff --git a/service/msgPush.go b/service/msgPush.go index 2da943d..d07d3de 100644 --- a/service/msgPush.go +++ b/service/msgPush.go @@ -186,6 +186,7 @@ "notification": { "title": title, "body": msg, + "big_text": msg, "click_type": "intent", "intent": intent, }, @@ -193,7 +194,7 @@ } iosPush := map[string]interface{}{ "type":"notify", - "payload":"鑲茶嫳涓鍋滆溅", + "payload": "鑲茶嫳涓鍋滆溅", "aps":map[string]interface{}{ "alert":map[string]string{ "title": title, @@ -261,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) @@ -424,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 @@ -436,24 +444,59 @@ } } if len(pushUserM) == 0 { - return false, errors.New("len(pushUserM) == 0"), 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+"()") + } } } } @@ -462,32 +505,121 @@ if len(aliasArr) == 0 { fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty") - return false, errors.New("娌℃湁鎺ㄩ�佺洰鏍�,aliasArr is empty"), 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) (bool, error, []string) { +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 := beego.AppConfig.String("nightManagerPhones") + 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, "") + managerArr := strings.Split(managers, ",") if len(managerArr) == 0 { fmt.Println("娌℃湁鎺ㄩ�佺洰鏍�,managerArr is empty") return false, errors.New("绠$悊鍛樻墜鏈哄彿鏈厤缃�"), managerArr @@ -501,6 +633,15 @@ 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 } /* @@ -629,4 +770,4 @@ return &t, nil } return nil, errors.New("鑾峰彇unipush骞冲彴token澶辫触") -} \ No newline at end of file +} -- Gitblit v1.8.0