From 7eda9be6f0021f2df46a9cb66d87fe23d5d3f904 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期三, 12 八月 2020 10:19:01 +0800
Subject: [PATCH] push to users those who bind clientId

---
 service/msgPush.go     |   10 ++++-
 models/userClient.go   |   53 ++++++++++++++++++++++++++
 models/db.go           |    2 
 service/userService.go |   20 ++++++++++
 4 files changed, 82 insertions(+), 3 deletions(-)

diff --git a/models/db.go b/models/db.go
index 5ad930c..72258a9 100644
--- a/models/db.go
+++ b/models/db.go
@@ -13,6 +13,6 @@
 	dbPath := rootPath +"/"+ dbUrl
 	orm.RegisterDriver("sqlite", orm.DRSqlite)
 	_ = orm.RegisterDataBase("default", "sqlite3", dbPath)
-	orm.RegisterModel(new(User), new(UserCar), new(SysUpgrade))
+	orm.RegisterModel(new(User), new(UserCar), new(SysUpgrade), new(UserClient))
 	_ = orm.RunSyncdb("default", false, true)
 }
diff --git a/models/userClient.go b/models/userClient.go
index 2640e7f..fafebeb 100644
--- a/models/userClient.go
+++ b/models/userClient.go
@@ -1 +1,54 @@
 package models
+
+import (
+	"fmt"
+	"github.com/astaxie/beego/orm"
+)
+
+//cid鍜屽埆鍚嶇粦瀹氳褰�
+type UserClient struct {
+	Id       	string 		`orm:"pk;size(50);column(id)" json:"id"`
+	PhoneNum 	string 		`orm:"column(phoneNum)" json:"phoneNum"` //鎵嬫満鍙�
+	ClientId 	string 		`orm:"column(clientId)" json:"clientId"` //鎵嬫満瀹㈡埛绔痠d
+	BindTime 	string 		`orm:"column(bindTime)" json:"bindTime"`
+}
+
+func (uc *UserClient) TableName() string {
+	return "user_client"
+}
+
+func (uc *UserClient) Insert() (int64,error) {
+	o := orm.NewOrm()
+	return o.Insert(uc)
+}
+
+func (uc *UserClient) Exist(phoneNum string) bool {
+	var list []UserClient
+	o := orm.NewOrm()
+	o.Raw("select * from ? where phoneNum=?", uc.TableName(), phoneNum).QueryRows(&list)
+	if len(list) >0 {
+		return true
+	}
+	return false
+}
+
+func (uc *UserClient) ExistByCid(phoneNum string, cid string) bool {
+	var list []UserClient
+	o := orm.NewOrm()
+	o.Raw("select * from ? where phoneNum=? and clientId=?", uc.TableName(), phoneNum, cid).QueryRows(&list)
+	if len(list) >0 {
+		return true
+	}
+	return false
+}
+
+
+func (uc *UserClient) Delete(phoneNum string, clientId string) (int64, error) {
+	o := orm.NewOrm()
+	sql := fmt.Sprintf("delete from "+uc.TableName()+" where phoneNum='%s' and clientId='%s'", phoneNum, clientId)
+	result, err := o.Raw(sql).Exec()
+	if err != nil {
+		return 0, err
+	}
+	return result.RowsAffected()
+}
\ No newline at end of file
diff --git a/service/msgPush.go b/service/msgPush.go
index a74701f..03e036e 100644
--- a/service/msgPush.go
+++ b/service/msgPush.go
@@ -259,10 +259,13 @@
 		}
 	}
 	fmt.Println("len(carPersonM):", len(carPersonM), "len(pushUserM):", len(pushUserM))
+	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)
+				}
 			}
 		}
 	}
@@ -387,11 +390,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)
+					}
 				}
 			}
 		}
diff --git a/service/userService.go b/service/userService.go
index 0bd2356..8f66c41 100644
--- a/service/userService.go
+++ b/service/userService.go
@@ -57,6 +57,16 @@
 				//瀹㈡埛绔痗id缁戝畾鍒悕
 				if cid != "" {
 					go func() {
+						var uc models.UserClient
+						if !uc.ExistByCid(phoneNum, cid) {
+							new := models.UserClient{
+								Id:uuid.NewV4().String(),
+								PhoneNum: phoneNum,
+								ClientId: cid,
+								BindTime: time.Now().Format("2006-01-02 15:04:05"),
+							}
+							new.Insert()
+						}
 						bindR, bindE := BindAlias(cid, phoneNum)
 						fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE)
 					}()
@@ -86,6 +96,16 @@
 			//瀹㈡埛绔痗id缁戝畾鍒悕
 			if cid != "" {
 				go func() {
+					var uc models.UserClient
+					if !uc.ExistByCid(phoneNum, cid) {
+						new := models.UserClient{
+							Id:uuid.NewV4().String(),
+							PhoneNum: phoneNum,
+							ClientId: cid,
+							BindTime: time.Now().Format("2006-01-02 15:04:05"),
+						}
+						new.Insert()
+					}
 					bindR, bindE := BindAlias(cid, phoneNum)
 					fmt.Println("bind cid:",cid, "phoneNum:",phoneNum,"result:", bindR, "err:", bindE)
 				}()

--
Gitblit v1.8.0