From b1d7efd8c4ab9c4bf56f62e636a358a5182c09bf Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 28 九月 2024 23:43:58 +0800
Subject: [PATCH] fix db colummn

---
 db/repository.go       |  318 ------------------
 db/device.go           |   35 ++
 db/moveInOut.go        |   77 ++++
 db/label.go            |   29 +
 rule/service.go        |    6 
 db/personStatusRule.go |   27 +
 db/personLabel.go      |   73 ++++
 .idea/workspace.xml    |   14 
 db/person.go           |   46 ++
 db/database.go         |    9 
 db/task.go             |   30 +
 db/models.go           |  154 --------
 db/publicHouse.go      |   27 +
 rule/engine.go         |   24 
 db/summary.go          |  117 ++++++
 15 files changed, 507 insertions(+), 479 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d901054..6521436 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,7 +2,12 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="919111b8-f2aa-4154-8db0-88e76c9af55d" name="Default Changelist" comment="">
-      <change beforePath="$PROJECT_DIR$/cache/device.go" beforeDir="false" afterPath="$PROJECT_DIR$/cache/device.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/db/database.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/database.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/db/models.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/models.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/db/repository.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/repository.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/rule/engine.go" beforeDir="false" afterPath="$PROJECT_DIR$/rule/engine.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/rule/service.go" beforeDir="false" afterPath="$PROJECT_DIR$/rule/service.go" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -192,12 +197,13 @@
     <property name="settings.editor.selected.configurable" value="watcher.settings" />
   </component>
   <component name="RecentsManager">
-    <key name="MoveFile.RECENT_KEYS">
-      <recent name="F:\workspace\golang\cloud_ai\ruleModelEngine\cache" />
-    </key>
     <key name="CopyFile.RECENT_KEYS">
       <recent name="F:\workspace\golang\cloud_ai\ruleModelEngine" />
     </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="E:\Basic\ruleModelEngine\db" />
+      <recent name="F:\workspace\golang\cloud_ai\ruleModelEngine\cache" />
+    </key>
   </component>
   <component name="RunManager" selected="Go Build.go build main.go">
     <configuration name="go build elastic.go" type="GoApplicationRunConfiguration" factoryName="Go Application" temporary="true" nameIsGenerated="true">
diff --git a/db/database.go b/db/database.go
index 43ef00e..ccbb054 100644
--- a/db/database.go
+++ b/db/database.go
@@ -1,10 +1,11 @@
 package db
 
 import (
+	"time"
+
 	"gorm.io/driver/mysql"
 	"gorm.io/gorm"
 	"ruleModelEngine/config"
-	"time"
 )
 
 var DB *gorm.DB
@@ -35,7 +36,11 @@
 	sqlDb.SetConnMaxLifetime(time.Duration(120) * time.Second)
 	sqlDb.SetConnMaxIdleTime(time.Duration(1800) * time.Second)
 
-	db.AutoMigrate(&PublicHouse{})
+	db.AutoMigrate(
+		&PublicHouse{},
+		&PersonnelStatusRule{},
+		&Task{},
+	)
 
 	DB = db
 	return nil
diff --git a/db/device.go b/db/device.go
new file mode 100644
index 0000000..b2881fb
--- /dev/null
+++ b/db/device.go
@@ -0,0 +1,35 @@
+package db
+
+type Device struct {
+	DeviceCode       string       `gorm:"column:device_code"`        // 璁惧缂栫爜
+	Name             string       `gorm:"column:name"`               // 璁惧鍚嶇О
+	Longitude        string       `gorm:"column:longitude"`          // 缁忓害
+	Latitude         string       `gorm:"column:latitude"`           // 绾害
+	CaptureNum       int          `gorm:"column:capture_num"`        // 鎶撴媿娆℃暟
+	Building         string       `gorm:"column:building"`           // 妤煎彿
+	BuildingType     BuildingType `gorm:"column:building_type"`      // 妤煎彿
+	Unit             string       `gorm:"column:unit"`               // 鍗曞厓鍙�
+	Position         string       `gorm:"column:position"`           // 瀹夎浣嶇疆
+	Floor            string       `gorm:"column:floor"`              // 妤煎眰鍙�
+	Type             int          `gorm:"column:type"`               // 璁惧绫诲瀷: 0 鎽勫儚鏈�, 1 璁惧绠�
+	Scene            int          `gorm:"column:scene"`              // 瀹夎鍦烘櫙: 0 瀹ゅ唴, 1 瀹ゅ
+	Direction        string       `gorm:"column:direction"`          // 鎷嶆憚鏂瑰悜: in, out
+	Entrance         string       `gorm:"column:entrance"`           // 鍏ュ彛鐨勪綅缃�: "1F,-1F,-2F"
+	CommunityID      string       `gorm:"column:community_id"`       // 甯搁┗灏忓尯 domain unit ID
+	OrgID            string       `gorm:"column:org_id"`             // 鎵�灞炴淳鍑烘墍 domain unit ID
+	MaxBuildingFloor int          `gorm:"column:max_building_floor"` //鏈�楂樻ゼ灞傚彿
+	MinBuildingFloor int          `gorm:"column:min_building_floor"` //鏈�浣庢ゼ灞傚彿
+	Disabled         int          `gorm:"column:disabled"`           // 绂佺敤
+}
+
+// 鏌ヨ璁惧琛�
+func GetDeviceData() ([]Device, error) {
+	// 鏌ヨ鏁版嵁
+	var db = DB
+	var device []Device
+	result := db.Table("device").Where("community_id != ?", "").Find(&device)
+	if result.Error != nil {
+		return nil, result.Error
+	}
+	return device, nil
+}
diff --git a/db/label.go b/db/label.go
new file mode 100644
index 0000000..ac87efc
--- /dev/null
+++ b/db/label.go
@@ -0,0 +1,29 @@
+package db
+
+type LabelManage struct {
+	ID        string `gorm:"column:id"`
+	Name      string `gorm:"column:name"`
+	Comment   string `gorm:"column:comment"`
+	Type      int    `gorm:"column:type"`
+	ValidDays int    `gorm:"column:valid_days"`
+}
+
+func (LabelManage) TableName() string {
+	return "label"
+}
+
+// 鏌ヨ浜虹墿韬唤灞炴�ц〃
+func GeIdentityLabels() ([]LabelManage, error) {
+	var db = DB
+
+	// 鏌ヨ鏁版嵁
+	var labelManageIdentity []LabelManage
+	if err := db.Table("label").
+		Select("id, name, valid_days").
+		Where("type = 2").
+		Find(&labelManageIdentity).Error; err != nil {
+		return nil, err
+	}
+
+	return labelManageIdentity, nil
+}
diff --git a/db/models.go b/db/models.go
index 67af5ca..52eef2e 100644
--- a/db/models.go
+++ b/db/models.go
@@ -1,18 +1,21 @@
 package db
 
-import (
-	"time"
+type BuildingType int
+
+const (
+	BuildingTypeResidential    BuildingType = 1 //浣忓畢妤�
+	BuildingTypeMixedUse       BuildingType = 2 //鍟嗕綇妤�
+	BuildingTypePublicRental   BuildingType = 3 //鍏鎴�
+	BuildingTypeLowIncome      BuildingType = 4 //寤夌鎴�
+	BuildingTypeOldResidential BuildingType = 5 //鑰佹棫灏忓尯
+	BuildingTypeOffice         BuildingType = 6 //鍐欏瓧妤�
 )
 
-type PersonnelStatusRule struct {
-	ID                  int    `gorm:"column:id"`
-	Name                string `gorm:"column:name"`
-	DetectionCountStart int    `gorm:"column:detectionCountStart"`
-	DetectionCountEnd   int    `gorm:"column:detectionCountEnd"`
-	DetectionDaysStart  int    `gorm:"column:detectionDaysStart"`
-	DetectionDaysEnd    int    `gorm:"column:detectionDaysEnd"`
-	Status              string `gorm:"column:status"`
-}
+const (
+	StatusStranger int = 1
+	StatusVisitor  int = 2
+	StatusResident int = 3
+)
 
 type AlarmRule struct {
 	RuleId     string `json:"ruleId"`
@@ -29,120 +32,6 @@
 	TargetType     string `json:"targetType"`
 	Floor          string `json:"floor"`
 }
-
-type BuildingType int
-
-const (
-	BuildingTypeResidential    BuildingType = 1 //浣忓畢妤�
-	BuildingTypeMixedUse       BuildingType = 2 //鍟嗕綇妤�
-	BuildingTypePublicRental   BuildingType = 3 //鍏鎴�
-	BuildingTypeLowIncome      BuildingType = 4 //寤夌鎴�
-	BuildingTypeOldResidential BuildingType = 5 //鑰佹棫灏忓尯
-	BuildingTypeOffice         BuildingType = 6 //鍐欏瓧妤�
-)
-
-//type status int
-
-const (
-	StatusStranger int = 1
-	StatusVisitor  int = 2
-	StatusResident int = 3
-)
-
-type Device struct {
-	DeviceCode       string       `gorm:"column:deviceCode" json:"deviceCode" example:"J83762"`                                 //璁惧缂栫爜
-	AreaID           string       `json:"areaID" gorm:"index;column:communityID;type:varchar(299);"`                            //甯镐綇灏忓尯 domain unit ID
-	BuildingType     BuildingType `gorm:"column:building_type;type:tinyint(1);not null;default:0" json:"buildingType"`          //妤煎畤绫诲瀷
-	MaxBuildingFloor int          `gorm:"column:max_building_floor;type:tinyint(1);not null;default:0" json:"maxBuildingFloor"` //鏈�楂樻ゼ灞傚彿
-}
-
-type Task struct {
-	Id   int    `gorm:"column:id"`
-	Name string `gorm:"name"`
-}
-
-func (Task) TableName() string {
-	return "task"
-}
-
-type MoveInout struct {
-	//RecordId       int        `gorm:"column:record_id"`
-	DocumentNumber string     `gorm:"column:document_number"`
-	CommunityID    string     `gorm:"column:community_id"`
-	MoveInDate     time.Time  `gorm:"column:move_in_date"`
-	MoveOutDate    *time.Time `gorm:"column:move_out_date"`
-	Status         string     `gorm:"column:status"`
-	MoveType       string     `gorm:"column:move_type"`
-}
-
-func (MoveInout) TableName() string {
-	return "move_inout"
-}
-
-type Resident struct {
-	CommunityId        string `gorm:"column:community_id"`
-	DocumentNumber     string `gorm:"column:document_number"`
-	LastAppearanceTime int64  `gorm:"column:last_appearance_time"`
-	CreateAt           string `gorm:"column:create_at"`
-}
-
-type PersonStatus struct {
-	Id                       uint   `gorm:"column:id;primary_key;auto_increment;not null;"`
-	OrgId                    string `gorm:"column:org_id;type:varchar(299);not null;default:''"`                                                                                            // 娲惧嚭鎵�id
-	CommunityID              string `gorm:"uniqueIndex:idx_document_number_community_id;index:community_id_last_appearance_time;column:community_id;type:varchar(299);not null;default:''"` // 灏忓尯id
-	DocumentNumber           string `gorm:"uniqueIndex:idx_document_number_community_id;column:document_number;type:varchar(299);not null;default:''"`                                      // 妗f缂栧彿
-	DaysAppeared             int    `gorm:"column:days_appeared;type:int(11);not null;default:0" json:"daysAppeared"`                                                                       // 鍑虹幇澶╂暟
-	Count                    int    `gorm:"column:count;type:int;not null;default:0"`                                                                                                       // 鎶撴媿娆℃暟
-	Status                   string `gorm:"column:status;type:varchar(255);not null;default:''"`                                                                                            //鏍囩
-	LastAppearanceTime       int64  `gorm:"index:community_id_last_appearance_time;column:last_appearance_time;type:int;not null;default:0" json:"lastAppearanceTime"`                      //鏈�鍚庡嚭鐜版椂闂�
-	LastAppearanceStatusTime int64  `gorm:"column:last_appearance_status_time"`
-	LastLocation             string `gorm:"column:last_location;type:varchar(255);not null;default:''" json:"lastLocation"`       //鏈�鍚庡嚭鐜板湴鐐�
-	FrequentAddress          string `gorm:"column:frequent_address;type:varchar(255);not null;default:''" json:"frequentAddress"` //甯稿嚭鐜板湴鐐�
-	CreatedAt                time.Time
-	UpdatedAt                time.Time
-	NewStatus                string `gorm:"-"`
-	////OrgId           string `gorm:"column:org_id"`
-	//CommunityID     string `gorm:"column:communityID"`
-	//DocumentNumber  string `gorm:"column:documentNumber"`
-	//Status          string `gorm:"column:status"`
-	//FrequentAddress string `gorm:"column:frequentAddress"`
-}
-
-func (PersonStatus) TableName() string {
-	return "snapshot_count_summary"
-}
-
-type LabelManage struct {
-	Id        int    `gorm:"id"`
-	Name      string `gorm:"name"`
-	ValidDays int    `gorm:"valid_days"`
-}
-
-func (LabelManage) TableName() string {
-	return "label_manage"
-}
-
-type Identity struct {
-	CreatedAt      time.Time
-	UpdatedAt      time.Time
-	CommunityID    string `gorm:"column:community_id"`
-	DocumentNumber string `gorm:"column:dbtablepersons_id"`
-	LabelId        int    `gorm:"column:label_id"`
-	ExpireTime     int64  `gorm:"column:expire_time"`
-}
-
-func (Identity) TableName() string {
-	return "dbtablepersons_label"
-}
-
-//
-//type ModelMatix struct {
-//	CommunityID     string
-//	DocumentNumber  string
-//	CaptureDate 	string
-//	Status          string
-//	FrequentAddress string
-//}
 
 type StatusPersonMapping struct {
 	Status string
@@ -163,19 +52,4 @@
 	CaptureDate    string `json:"captureDate"`
 	CaptureAddress string `json:"captureAddress"`
 	Direction      string `json:"direction"`
-}
-
-type PublicHouse struct {
-	ID              int    `gorm:"primaryKey;autoIncrement" json:"id"`                        // 涓婚敭ID
-	CommunityID     string `gorm:"column:community_id;type:varchar(255)" json:"community_id"` // 灏忓尯ID
-	Applicant       string `gorm:"column:applicant;type:varchar(255)" json:"applicant"`       // 鐢宠浜�
-	IdCard          string `gorm:"column:id_card;type:varchar(50)" json:"id_card"`            // 璇佷欢缂栧彿
-	PhoneNumber     string `gorm:"column:phone_number;type:varchar(20)" json:"phone_number"`  // 鑱旂郴鐢佃瘽
-	Address         string `gorm:"column:address;type:varchar(255)" json:"address"`           // 鎴垮眿鍦板潃
-	ApplicationTime string `gorm:"column:application_time" json:"application_time"`           // 鐢宠鏃堕棿
-	EndTime         string `gorm:"column:end_time" json:"end_time"`                           // 缁撴潫鏃堕棿
-}
-
-func (PublicHouse) TableName() string {
-	return "public_house"
 }
diff --git a/db/moveInOut.go b/db/moveInOut.go
new file mode 100644
index 0000000..dfaf544
--- /dev/null
+++ b/db/moveInOut.go
@@ -0,0 +1,77 @@
+package db
+
+import (
+	"basic.com/valib/logger.git"
+	"errors"
+	"gorm.io/gorm"
+	"time"
+)
+
+type MoveInout struct {
+	ID                 string `gorm:"column:id;type:varchar(255);" json:"id"`
+	OrgId              string `gorm:"column:org_id;type:varchar(299);not null;default:''"`                                                                                            // 娲惧嚭鎵�id
+	CommunityID        string `gorm:"uniqueIndex:idx_document_number_community_id;index:community_id_last_appearance_time;column:community_id;type:varchar(299);not null;default:''"` // 灏忓尯id
+	DocumentNumber     string `gorm:"uniqueIndex:idx_document_number_community_id;column:document_number;type:varchar(299);not null;default:''"`                                      //鏈�鍚庡嚭鐜板湴鐐�
+	MoveInDate         string `gorm:"column:move_in_date;type:date;" json:"moveInDate"`                                                                                               //鎼叆鏃ユ湡
+	MoveOutDate        string `gorm:"column:move_out_date;type:date;" json:"moveOutDate"`                                                                                             //鎼嚭鏃ユ湡
+	Status             string `gorm:"column:status;"`
+	MoveType           string `gorm:"column:move_type;"`
+	DaysAppeared       int    `gorm:"column:days_appeared;type:int(11);not null;default:0" json:"daysAppeared"`                                                  // 鍑虹幇澶╂暟
+	LastAppearanceTime int64  `gorm:"index:community_id_last_appearance_time;column:last_appearance_time;type:int;not null;default:0" json:"lastAppearanceTime"` //鏈�鍚庡嚭鐜版椂闂�
+	LastLocation       string `gorm:"column:last_location;type:varchar(255);not null;default:''" json:"lastLocation"`                                            //鏈�鍚庡嚭鐜板湴鐐�
+	CreatedAt          time.Time
+	UpdatedAt          time.Time
+	DeletedAt          gorm.DeletedAt `gorm:"index" json:"-"`
+}
+
+// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樹俊鎭�
+func UpdateMoveInout(personsMoveInout []MoveInout) error {
+	var db = DB
+	// 閬嶅巻浜哄憳淇℃伅
+	for _, personMoveInout := range personsMoveInout {
+
+		// 妫�鏌ヨ褰曟槸鍚﹀瓨鍦�
+		var existingPerson MoveInout
+		err := db.Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).First(&existingPerson).Error
+		if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+			logger.Error("Query person error:", err, personMoveInout.DocumentNumber, personMoveInout.CommunityID)
+			continue
+		}
+
+		// 濡傛灉璁板綍瀛樺湪锛屽垯鏇存柊
+		if existingPerson.DocumentNumber != "" {
+			//fmt.Println("existingPerson.DocumentNumber: ", existingPerson.DocumentNumber)
+			if existingPerson.Status != "Verified" {
+				err := db.Model(&MoveInout{}).
+					Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).
+					Updates(map[string]interface{}{
+						"status":        personMoveInout.Status,
+						"move_out_date": personMoveInout.MoveOutDate,
+					}).Error
+				if err != nil {
+					return err
+				}
+			} else {
+				err := db.Model(&MoveInout{}).
+					Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).
+					Updates(map[string]interface{}{
+						"move_out_date": personMoveInout.MoveOutDate,
+					}).Error
+				if err != nil {
+					return err
+				}
+			}
+		} else {
+			// 濡傛灉璁板綍涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
+			//fmt.Println("鎻掑叆璁板綍澶辫触")
+			//fmt.Println("data", &personMoveInout)
+			err := db.Create(&personMoveInout).Error
+			if err != nil {
+				return err
+			}
+		}
+
+	}
+
+	return nil
+}
diff --git a/db/person.go b/db/person.go
new file mode 100644
index 0000000..0eecb29
--- /dev/null
+++ b/db/person.go
@@ -0,0 +1,46 @@
+package db
+
+import "strconv"
+
+// 鏍规嵁dbtablepersons琛╥d鏌ヨ鐩爣妗f骞撮緞
+func QueryAgeById(id string) (int, error) {
+	var db = DB
+	var age string
+	err := db.Table("person").
+		Select("age").
+		Where("id = ?", id).
+		Scan(&age).Error
+	if err != nil {
+		return 0, err
+	}
+
+	return strconv.Atoi(age)
+}
+
+// 鏌ヨ浜虹墿骞撮緞
+func GetAgeById(id string) (int, error) {
+	var db = DB
+	// 鏌ヨ鏁版嵁
+	var age string
+	if err := db.Table("person").
+		Select("age").
+		Where("id = ?", id).
+		Find(&age).Error; err != nil {
+		return 0, err
+	}
+
+	return strconv.Atoi(age)
+}
+
+// 鏌ヨ浜虹墿韬唤璇佸彿
+func GetIdCardById(id string) string {
+	var db = DB
+	// 鏌ヨ鏁版嵁
+	var idCard string
+	db.Table("person").
+		Select("id_card").
+		Where("id = ?", id).
+		Find(&idCard)
+
+	return idCard
+}
diff --git a/db/personLabel.go b/db/personLabel.go
new file mode 100644
index 0000000..8846037
--- /dev/null
+++ b/db/personLabel.go
@@ -0,0 +1,73 @@
+package db
+
+import (
+	"basic.com/valib/logger.git"
+	"errors"
+	"gorm.io/gorm"
+	"time"
+)
+
+type Identity struct {
+	ID             string `gorm:"primary_key;column:id;type:varchar(255);" json:"id"`
+	CreatedAt      time.Time
+	UpdatedAt      time.Time
+	DeletedAt      gorm.DeletedAt `gorm:"index" json:"-"`
+	CommunityID    string         `gorm:"column:community_id"`
+	DocumentNumber string         `gorm:"column:person_id"`
+	LabelId        string         `gorm:"column:label_id"`
+	ExpireTime     int64          `gorm:"column:expire_time"`
+}
+
+func (Identity) TableName() string {
+	return "person_label"
+}
+
+// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樿韩浠戒俊鎭�
+func UpdateDBPersonLabel(personsIdentity []Identity) error {
+	var db = DB
+	// 閬嶅巻浜哄憳淇℃伅
+	for _, personIdentity := range personsIdentity {
+
+		// 妫�鏌ヨ褰曟槸鍚﹀瓨鍦�
+		var existingPerson Identity
+		err := db.Where("person_id = ? AND community_id = ? AND label_id = ?",
+			personIdentity.DocumentNumber,
+			personIdentity.CommunityID,
+			personIdentity.LabelId,
+		).First(&existingPerson).Error
+		if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+			logger.Error("Query person error:", err,
+				personIdentity.DocumentNumber,
+				personIdentity.CommunityID,
+				personIdentity.LabelId)
+			//fmt.Println("asdasfasfasf")
+			continue
+			//return err
+		}
+
+		// 濡傛灉璁板綍瀛樺湪锛屽垯鏇存柊
+		if existingPerson.DocumentNumber != "" {
+			err := db.Model(&Identity{}).
+				Where("person_id = ? AND community_id = ? AND label_id = ?",
+					personIdentity.DocumentNumber,
+					personIdentity.CommunityID,
+					personIdentity.LabelId,
+				).
+				Updates(map[string]interface{}{
+					"expire_time": personIdentity.ExpireTime,
+				}).Error
+			if err != nil {
+				return err
+			}
+		} else {
+			// 濡傛灉璁板綍涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
+			err := db.Create(&personIdentity).Error
+			if err != nil {
+				return err
+			}
+		}
+
+	}
+
+	return nil
+}
diff --git a/db/personStatusRule.go b/db/personStatusRule.go
new file mode 100644
index 0000000..6d4f5c9
--- /dev/null
+++ b/db/personStatusRule.go
@@ -0,0 +1,27 @@
+package db
+
+type PersonnelStatusRule struct {
+	ID                  int    `gorm:"column:id"`
+	Name                string `gorm:"column:name"`
+	DetectionCountStart int    `gorm:"column:capture_count_start"`
+	DetectionCountEnd   int    `gorm:"column:capture_count_end"`
+	DetectionDaysStart  int    `gorm:"column:capture_days_start"`
+	DetectionDaysEnd    int    `gorm:"column:capture_days_end"`
+	Status              string `gorm:"column:status"`
+}
+
+func (psr *PersonnelStatusRule) TableName() string {
+	return "person_status_rule"
+}
+
+// 鏌ヨ鍏ㄩ儴鏁版嵁
+func GetAllData() ([]PersonnelStatusRule, error) {
+	var db = DB
+
+	var rules []PersonnelStatusRule
+	if err := db.Find(&rules).Error; err != nil {
+		return nil, err
+	}
+
+	return rules, nil
+}
diff --git a/db/publicHouse.go b/db/publicHouse.go
new file mode 100644
index 0000000..52a90cc
--- /dev/null
+++ b/db/publicHouse.go
@@ -0,0 +1,27 @@
+package db
+
+type PublicHouse struct {
+	ID              int    `gorm:"primaryKey;autoIncrement" json:"id"`                        // 涓婚敭ID
+	CommunityID     string `gorm:"column:community_id;type:varchar(255)" json:"community_id"` // 灏忓尯ID
+	Applicant       string `gorm:"column:applicant;type:varchar(255)" json:"applicant"`       // 鐢宠浜�
+	IdCard          string `gorm:"column:id_card;type:varchar(50)" json:"id_card"`            // 璇佷欢缂栧彿
+	PhoneNumber     string `gorm:"column:phone_number;type:varchar(20)" json:"phone_number"`  // 鑱旂郴鐢佃瘽
+	Address         string `gorm:"column:address;type:varchar(255)" json:"address"`           // 鎴垮眿鍦板潃
+	ApplicationTime string `gorm:"column:application_time" json:"application_time"`           // 鐢宠鏃堕棿
+	EndTime         string `gorm:"column:end_time" json:"end_time"`                           // 缁撴潫鏃堕棿
+}
+
+func (PublicHouse) TableName() string {
+	return "public_house"
+}
+
+func GetPublicHouseData() ([]PublicHouse, error) {
+	// 鏌ヨ鏁版嵁
+	var db = DB
+	var ph []PublicHouse
+	result := db.Table("public_house").Where("1 = 1").Find(&ph)
+	if result.Error != nil {
+		return nil, result.Error
+	}
+	return ph, nil
+}
diff --git a/db/repository.go b/db/repository.go
index ca159f7..f948b01 100644
--- a/db/repository.go
+++ b/db/repository.go
@@ -1,330 +1,14 @@
 package db
 
-import (
-	"basic.com/valib/logger.git"
-	"errors"
-	"gorm.io/gorm"
-	"strconv"
-)
-
 // 鏌ヨ灏忓尯琛�
 func GetCommunityIDs() ([]string, error) {
 	// 鏌ヨ鏁版嵁
 	var db = DB
 	var communityIDs []string
-	result := db.Table("domain_unit").Where("domainType = ?", 1).Pluck("id", &communityIDs)
+	result := db.Table("domain_unit").Where("domain_type = ?", 1).Pluck("id", &communityIDs)
 	if result.Error != nil {
 		return nil, result.Error
 	}
 
 	return communityIDs, nil
-}
-
-// 鏌ヨ璁惧琛�
-func GetDeviceData() ([]Device, error) {
-	// 鏌ヨ鏁版嵁
-	var db = DB
-	var device []Device
-	result := db.Table("device").Where("communityID != ?", "").Find(&device)
-	if result.Error != nil {
-		return nil, result.Error
-	}
-	return device, nil
-}
-
-func GetPublicHouseData() ([]PublicHouse, error) {
-	// 鏌ヨ鏁版嵁
-	var db = DB
-	var ph []PublicHouse
-	result := db.Table("public_house").Where("1 = 1").Find(&ph)
-	if result.Error != nil {
-		return nil, result.Error
-	}
-	return ph, nil
-}
-
-// 鏌ヨ鍏ㄩ儴鏁版嵁
-func GetAllTaskData() ([]Task, error) {
-	var db = DB
-	var task []Task
-	if err := db.Find(&task).Error; err != nil {
-		return nil, err
-	}
-
-	return task, nil
-}
-
-// 鏌ヨ鍏ㄩ儴鏁版嵁
-func GetAllData() ([]PersonnelStatusRule, error) {
-	var db = DB
-	var rules []PersonnelStatusRule
-	if err := db.Find(&rules).Error; err != nil {
-		return nil, err
-	}
-
-	return rules, nil
-}
-
-// 鏌ヨ浣忔埛鏃堕棿鏁版嵁
-func GetResidentData(status, communityID string) ([]Resident, error) {
-	var residents []Resident
-	//var db = DB.Debug()
-	var db = DB
-	// 鎵ц鏌ヨ
-	rows, err := db.Table("snapshot_count_summary").
-		Select("document_number", "community_id", "last_appearance_time", "created_at").
-		Where("status = ? AND community_id = ?", status, communityID).
-		//Where("snapshot_count_summary.created_at is not null").
-		Rows()
-	if err != nil {
-		return nil, err
-	}
-	defer rows.Close()
-
-	// 閬嶅巻鏌ヨ缁撴灉
-	for rows.Next() {
-		var resident Resident
-		err := rows.Scan(&resident.DocumentNumber, &resident.CommunityId, &resident.LastAppearanceTime, &resident.CreateAt)
-		if err != nil {
-			logger.Error("err: ", err)
-			return nil, err
-		}
-		//fmt.Println("resident111: ", resident)
-		residents = append(residents, resident)
-	}
-	if err := rows.Err(); err != nil {
-		return nil, err
-	}
-
-	return residents, nil
-}
-
-// 鏌ヨ浜虹墿灞炴��
-func GetDBPersonStatus(id, communityId string) string {
-	var db = DB
-
-	// 鏌ヨ鏁版嵁
-	var personStatus string
-	db.Table("snapshot_count_summary").
-		Select("status").
-		Where("community_id = ? and document_number = ?", communityId, id).
-		Find(&personStatus)
-
-	return personStatus
-}
-
-// 鏌ヨ灏忓尯妗f琛� (鍘熸煡璇换鍔″睘鎬�)
-func QueryPersonStatusWithPagination(community_id string, timeThreshold int64) ([]*PersonStatus, error) {
-	var db = DB
-	var personStatusList []*PersonStatus
-	result := db.Select("document_number, status, frequent_address, last_appearance_time, last_appearance_status_time").
-		Where("community_id = ? AND last_appearance_time != last_appearance_status_time AND last_appearance_time > ?", community_id, timeThreshold).
-		Find(&personStatusList)
-	if result.Error != nil {
-		logger.Error(result.Error)
-		return nil, result.Error
-	}
-	return personStatusList, nil
-}
-
-// 鏌ヨ浜虹墿骞撮緞
-func GetAgeById(id string) (int, error) {
-	var db = DB
-	// 鏌ヨ鏁版嵁
-	var age string
-	if err := db.Table("dbtablepersons").
-		Select("age").
-		Where("id = ?", id).
-		Find(&age).Error; err != nil {
-		return 0, err
-	}
-
-	return strconv.Atoi(age)
-}
-
-// 鏌ヨ浜虹墿韬唤璇佸彿
-func GetIdCardById(id string) string {
-	var db = DB
-	// 鏌ヨ鏁版嵁
-	var idCard string
-	db.Table("dbtablepersons").
-		Select("idCard").
-		Where("id = ?", id).
-		Find(&idCard)
-
-	return idCard
-}
-
-//// 鏍规嵁绀惧尯id鍜屼綇鎴峰睘鎬ф煡璇綇鎴锋。妗堢紪鍙�
-//func GetDocNumberFromPersonStatus(id, status string) ([]string, error) {
-//	var db = DB
-//	// 鏌ヨ鏁版嵁
-//	var personStatusList []PersonStatus
-//	if err := db.Table("person_status").
-//		Select("documentNumber, status, frequentAddress").
-//		Where("communityID = ? AND status = ?", id, status).
-//		Find(&personStatusList).Error; err != nil {
-//		return nil, err
-//	}
-//
-//	docNum := make([]string, 0)
-//	for _, ps := range personStatusList {
-//		docNum = append(docNum, ps.DocumentNumber)
-//	}
-//
-//	return docNum, nil
-//}
-
-// 鏌ヨ浜虹墿韬唤灞炴�ц〃
-func GetLabelManageIdentity(IdentityType int) ([]LabelManage, error) {
-	var db = DB
-	// 鏌ヨ鏁版嵁
-	var labelManageIdentity []LabelManage
-	if err := db.Table("label_manage").
-		Select("id, name, valid_days").
-		Where("type = ?", IdentityType).
-		Find(&labelManageIdentity).Error; err != nil {
-		return nil, err
-	}
-
-	return labelManageIdentity, nil
-}
-
-// 鏍规嵁dbtablepersons琛╥d鏌ヨ鐩爣妗f骞撮緞
-func QueryAgeById(id string) (int, error) {
-	var db = DB
-	var age string
-	err := db.Table("dbtablepersons").
-		Select("age").
-		Where("id = ?", id).
-		Scan(&age).Error
-	if err != nil {
-		return 0, err
-	}
-
-	return strconv.Atoi(age)
-}
-
-// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樹俊鎭�
-func UpdateMoveInout(personsMoveInout []MoveInout) error {
-	var db = DB
-	// 閬嶅巻浜哄憳淇℃伅
-	for _, personMoveInout := range personsMoveInout {
-
-		// 妫�鏌ヨ褰曟槸鍚﹀瓨鍦�
-		var existingPerson MoveInout
-		err := db.Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).First(&existingPerson).Error
-		if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
-			logger.Error("Query person error:", err, personMoveInout.DocumentNumber, personMoveInout.CommunityID)
-			//fmt.Println("asdasfasfasf")
-			continue
-			//return err
-		}
-
-		// 濡傛灉璁板綍瀛樺湪锛屽垯鏇存柊
-		if existingPerson.DocumentNumber != "" {
-			//fmt.Println("existingPerson.DocumentNumber: ", existingPerson.DocumentNumber)
-			if existingPerson.Status != "Verified" {
-				err := db.Model(&MoveInout{}).
-					Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).
-					Updates(map[string]interface{}{
-						"status":        personMoveInout.Status,
-						"move_out_date": personMoveInout.MoveOutDate,
-					}).Error
-				if err != nil {
-					return err
-				}
-			} else {
-				err := db.Model(&MoveInout{}).
-					Where("document_number = ? AND community_id = ?", personMoveInout.DocumentNumber, personMoveInout.CommunityID).
-					Updates(map[string]interface{}{
-						"move_out_date": personMoveInout.MoveOutDate,
-					}).Error
-				if err != nil {
-					return err
-				}
-			}
-		} else {
-			// 濡傛灉璁板綍涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
-			//fmt.Println("鎻掑叆璁板綍澶辫触")
-			//fmt.Println("data", &personMoveInout)
-			err := db.Create(&personMoveInout).Error
-			if err != nil {
-				return err
-			}
-		}
-
-	}
-
-	return nil
-}
-
-// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樿韩浠戒俊鎭�
-func UpdateDBPersonLabel(personsIdentity []Identity) error {
-	var db = DB
-	// 閬嶅巻浜哄憳淇℃伅
-	for _, personIdentity := range personsIdentity {
-
-		// 妫�鏌ヨ褰曟槸鍚﹀瓨鍦�
-		var existingPerson Identity
-		err := db.Where("dbtablepersons_id = ? AND community_id = ? AND label_id = ?",
-			personIdentity.DocumentNumber,
-			personIdentity.CommunityID,
-			personIdentity.LabelId,
-		).First(&existingPerson).Error
-		if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
-			logger.Error("Query person error:", err,
-				personIdentity.DocumentNumber,
-				personIdentity.CommunityID,
-				personIdentity.LabelId)
-			//fmt.Println("asdasfasfasf")
-			continue
-			//return err
-		}
-
-		// 濡傛灉璁板綍瀛樺湪锛屽垯鏇存柊
-		if existingPerson.DocumentNumber != "" {
-			err := db.Model(&Identity{}).
-				Where("dbtablepersons_id = ? AND community_id = ? AND label_id = ?",
-					personIdentity.DocumentNumber,
-					personIdentity.CommunityID,
-					personIdentity.LabelId,
-				).
-				Updates(map[string]interface{}{
-					"expire_time": personIdentity.ExpireTime,
-				}).Error
-			if err != nil {
-				return err
-			}
-		} else {
-			// 濡傛灉璁板綍涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
-			err := db.Create(&personIdentity).Error
-			if err != nil {
-				return err
-			}
-		}
-
-	}
-
-	return nil
-}
-
-// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樹俊鎭�
-func UpdatePersonInfo(persons []PersonStatus, communityID string) error {
-	var db = DB
-	// 閬嶅巻浜哄憳淇℃伅
-	for _, person := range persons {
-		err := db.Model(&PersonStatus{}).
-			Where("document_number = ? AND community_id = ?", person.DocumentNumber, communityID).
-			Updates(map[string]interface{}{
-				"status":                   person.Status,
-				"frequent_address":         person.FrequentAddress,
-				"LastAppearanceStatusTime": person.LastAppearanceStatusTime,
-			}).Error
-		if err != nil {
-			return err
-		}
-	}
-
-	return nil
 }
diff --git a/db/summary.go b/db/summary.go
new file mode 100644
index 0000000..f1a856c
--- /dev/null
+++ b/db/summary.go
@@ -0,0 +1,117 @@
+package db
+
+import (
+	"basic.com/valib/logger.git"
+	"gorm.io/gorm"
+	"time"
+)
+
+type PersonStatus struct {
+	ID                       string `gorm:"primary_key;column:id;type:varchar(255);" json:"id"`
+	CreatedAt                time.Time
+	UpdatedAt                time.Time
+	DeletedAt                gorm.DeletedAt `gorm:"index" json:"-"`
+	OrgId                    string         `gorm:"column:org_id"`                      // 娲惧嚭鎵�id
+	CommunityID              string         `gorm:"column:community_id"`                // 灏忓尯id
+	DocumentNumber           string         `gorm:"column:document_number"`             // 妗f缂栧彿
+	DaysAppeared             int            `gorm:"column:days_appeared"`               // 鍑虹幇澶╂暟
+	Count                    int            `gorm:"column:count"`                       // 鎶撴媿娆℃暟
+	Status                   string         `gorm:"column:status"`                      // 鏍囩
+	LastAppearanceTime       int64          `gorm:"column:last_appearance_time"`        // 鏈�鍚庡嚭鐜版椂闂�
+	LastAppearanceStatusTime int64          `gorm:"column:last_appearance_status_time"` // 鏈�鍚庡嚭鐜版椂闂�
+	LastLocation             string         `gorm:"column:last_location"`               // 鏈�鍚庡嚭鐜板湴鐐�
+	FrequentAddress          string         `gorm:"column:frequent_address"`            // 甯镐綇鍦板潃
+}
+
+func (PersonStatus) TableName() string {
+	return "snapshot_count_summary"
+}
+
+type Resident struct {
+	CommunityId        string `gorm:"column:community_id"`
+	DocumentNumber     string `gorm:"column:document_number"`
+	LastAppearanceTime int64  `gorm:"column:last_appearance_time"`
+	CreateAt           string `gorm:"column:create_at"`
+}
+
+// 鏌ヨ浣忔埛鏃堕棿鏁版嵁
+func GetResidentData(status, communityID string) ([]Resident, error) {
+	var residents []Resident
+	//var db = DB.Debug()
+	var db = DB
+	// 鎵ц鏌ヨ
+	rows, err := db.Table("snapshot_count_summary").
+		Select("document_number", "community_id", "last_appearance_time", "created_at").
+		Where("status = ? AND community_id = ?", status, communityID).
+		//Where("snapshot_count_summary.created_at is not null").
+		Rows()
+	if err != nil {
+		return nil, err
+	}
+	defer rows.Close()
+
+	// 閬嶅巻鏌ヨ缁撴灉
+	for rows.Next() {
+		var resident Resident
+		err := rows.Scan(&resident.DocumentNumber, &resident.CommunityId, &resident.LastAppearanceTime, &resident.CreateAt)
+		if err != nil {
+			logger.Error("err: ", err)
+			return nil, err
+		}
+		//fmt.Println("resident111: ", resident)
+		residents = append(residents, resident)
+	}
+	if err := rows.Err(); err != nil {
+		return nil, err
+	}
+
+	return residents, nil
+}
+
+// 鏌ヨ浜虹墿灞炴��
+func GetDBPersonStatus(id, communityId string) string {
+	var db = DB
+
+	// 鏌ヨ鏁版嵁
+	var personStatus string
+	db.Table("snapshot_count_summary").
+		Select("status").
+		Where("community_id = ? and document_number = ?", communityId, id).
+		Find(&personStatus)
+
+	return personStatus
+}
+
+// 鏌ヨ灏忓尯妗f琛� (鍘熸煡璇换鍔″睘鎬�)
+func QueryPersonStatusWithPagination(community_id string, timeThreshold int64) ([]*PersonStatus, error) {
+	var db = DB
+	var personStatusList []*PersonStatus
+	result := db.Select("document_number, status, frequent_address, last_appearance_time, last_appearance_status_time").
+		Where("community_id = ? AND last_appearance_time != last_appearance_status_time AND last_appearance_time > ?", community_id, timeThreshold).
+		Find(&personStatusList)
+	if result.Error != nil {
+		logger.Error(result.Error)
+		return nil, result.Error
+	}
+	return personStatusList, nil
+}
+
+// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樹俊鎭�
+func UpdatePersonInfo(persons []PersonStatus, communityID string) error {
+	var db = DB
+	// 閬嶅巻浜哄憳淇℃伅
+	for _, person := range persons {
+		err := db.Model(&PersonStatus{}).
+			Where("document_number = ? AND community_id = ?", person.DocumentNumber, communityID).
+			Updates(map[string]interface{}{
+				"status":                   person.Status,
+				"frequent_address":         person.FrequentAddress,
+				"LastAppearanceStatusTime": person.LastAppearanceStatusTime,
+			}).Error
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
diff --git a/db/task.go b/db/task.go
new file mode 100644
index 0000000..a64ab90
--- /dev/null
+++ b/db/task.go
@@ -0,0 +1,30 @@
+package db
+
+import (
+	"gorm.io/gorm"
+	"time"
+)
+
+type Task struct {
+	Id        int    `gorm:"column:id"`
+	Name      string `gorm:"column:name"`
+	disabled  bool   `gorm:"column:disabled,default:0"`
+	CreatedAt time.Time
+	UpdatedAt time.Time
+	DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
+}
+
+func (Task) TableName() string {
+	return "surveillance_task"
+}
+
+// 鏌ヨ鍏ㄩ儴鏁版嵁
+func GetAllTaskData() ([]Task, error) {
+	var db = DB
+	var task []Task
+	if err := db.Find(&task).Error; err != nil {
+		return nil, err
+	}
+
+	return task, nil
+}
diff --git a/rule/engine.go b/rule/engine.go
index 8d3322f..95fdafd 100644
--- a/rule/engine.go
+++ b/rule/engine.go
@@ -17,19 +17,17 @@
 
 	// 閬嶅巻Resident缁撴瀯浣撳垏鐗�
 	for _, resident := range residents {
-		//fmt.Println("gogogogo!!!!!!!!!!!!!!!!!!!!!!!!!!!")
 		// 灏嗗瓧绗︿覆绫诲瀷鐨勬椂闂磋浆鎹负time.Time绫诲瀷锛屽苟鍙繚鐣欏勾鏈堟棩
 		lastAppearanceTime := time.Unix(resident.LastAppearanceTime, 0)
 		lastAppearanceDate := time.Date(lastAppearanceTime.Year(), lastAppearanceTime.Month(), lastAppearanceTime.Day(), 0, 0, 0, 0, lastAppearanceTime.Location())
-		//lastAppearanceTime, err := time.Parse("2006-01-02", resident.LastAppearanceTime)
-		datePart := strings.Split(resident.CreateAt, "T")[0]
-		createdAt, err := time.Parse("2006-01-02", datePart)
+		createdAt, err := time.Parse("2006-01-02", resident.CreateAt)
 		if err != nil {
 			fmt.Println(err)
 			// 澶勭悊鏃堕棿瑙f瀽閿欒
 			// 鍙互閫夋嫨璺宠繃璇ユ潯鏁版嵁鎴栬�呰褰曟棩蹇�
 			continue
 		}
+
 		// 璁$畻LastAppearanceTime鍜孋reateAt璺濈褰撳墠鏃ユ湡鐨勫ぉ鏁�
 		daysSinceLastAppearance := currentDate.Sub(lastAppearanceDate).Hours() / 24
 		daysSinceCreateAt := currentDate.Sub(createdAt).Hours() / 24
@@ -63,8 +61,8 @@
 		moveInout = append(moveInout, db.MoveInout{
 			DocumentNumber: resident.DocumentNumber,
 			CommunityID:    resident.CommunityId,
-			MoveInDate:     createdAt,           // 瀛樺偍骞存湀鏃�
-			MoveOutDate:    &lastAppearanceDate, // 瀛樺偍骞存湀鏃�
+			MoveInDate:     createdAt.Format("2006-01-02"),          // 瀛樺偍骞存湀鏃�
+			MoveOutDate:    lastAppearanceDate.Format("2006-01-02"), // 瀛樺偍骞存湀鏃�
 			MoveType:       moveType,
 			Status:         status,
 		})
@@ -84,7 +82,7 @@
 //	return true, nil
 //}
 
-func CreateLinearModel(personInfos []db.CaptureInfo, communityID string, threshold float64, validDays int, labelId int) ([]db.Identity, []db.CaptureInfo) {
+func CreateLinearModel(personInfos []db.CaptureInfo, communityID string, threshold float64, validDays int, labelId string) ([]db.Identity, []db.CaptureInfo) {
 	identity := make([]db.Identity, 0)
 	captureInfo := make([]db.CaptureInfo, 0)
 	for _, info := range personInfos {
@@ -203,21 +201,21 @@
 				identity = append(identity, db.Identity{
 					CommunityID:    communityID,
 					DocumentNumber: info.DocumentNumber,
-					LabelId:        labelManage[lIndex].Id,
+					LabelId:        labelManage[lIndex].ID,
 					ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 			} else if info.Age >= 23 && info.Age <= 60 {
 				lIndex := labelIndexMap["涓婄彮鏃�"]
 				identity = append(identity, db.Identity{
 					CommunityID:    communityID,
 					DocumentNumber: info.DocumentNumber,
-					LabelId:        labelManage[lIndex].Id,
+					LabelId:        labelManage[lIndex].ID,
 					ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 			} else if info.Age > 60 {
 				lIndex := labelIndexMap["绂婚��浼戜汉鍛�"]
 				identity = append(identity, db.Identity{
 					CommunityID:    communityID,
 					DocumentNumber: info.DocumentNumber,
-					LabelId:        labelManage[lIndex].Id,
+					LabelId:        labelManage[lIndex].ID,
 					ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 			}
 			//fmt.Println("涓婄彮鏃�", info.DocumentNumber, info.Age, countMaxRows, colS, colE)
@@ -230,21 +228,21 @@
 					identity = append(identity, db.Identity{
 						CommunityID:    communityID,
 						DocumentNumber: info.DocumentNumber,
-						LabelId:        labelManage[lIndex].Id,
+						LabelId:        labelManage[lIndex].ID,
 						ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 				} else if info.Age >= 23 && info.Age <= 60 {
 					lIndex := labelIndexMap["涓婄彮鏃�"]
 					identity = append(identity, db.Identity{
 						CommunityID:    communityID,
 						DocumentNumber: info.DocumentNumber,
-						LabelId:        labelManage[lIndex].Id,
+						LabelId:        labelManage[lIndex].ID,
 						ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 				} else if info.Age > 60 {
 					lIndex := labelIndexMap["绂婚��浼戜汉鍛�"]
 					identity = append(identity, db.Identity{
 						CommunityID:    communityID,
 						DocumentNumber: info.DocumentNumber,
-						LabelId:        labelManage[lIndex].Id,
+						LabelId:        labelManage[lIndex].ID,
 						ExpireTime:     GetCurrentDateAddDaysTimestamp(labelManage[lIndex].ValidDays)})
 				}
 				//fmt.Println("涓婄彮鏃�", info.DocumentNumber, info.Age, countMaxRows, colS, colE)
diff --git a/rule/service.go b/rule/service.go
index b670028..dfcb083 100644
--- a/rule/service.go
+++ b/rule/service.go
@@ -87,7 +87,7 @@
 
 	cameraIds := make([]string, 0)
 	for _, deviceInfo := range cache.Device {
-		if deviceInfo.AreaID == communityId && deviceInfo.BuildingType == db.BuildingTypeMixedUse {
+		if deviceInfo.CommunityID == communityId && deviceInfo.BuildingType == db.BuildingTypeMixedUse {
 			cameraIds = append(cameraIds, deviceInfo.DeviceCode)
 		}
 	}
@@ -137,7 +137,7 @@
 	if err != nil {
 		logger.Error("GetCommunityIDs Error", err)
 	}
-	labeManage, err := db.GetLabelManageIdentity(2)
+	labeManage, err := db.GeIdentityLabels()
 	if err != nil {
 		logger.Error("GetDBPersonStatusData Error", err)
 	}
@@ -223,7 +223,7 @@
 		for _, identity := range labeManage {
 			switch identity.Name {
 			case "鏈嶅姟浜哄憳":
-				identity, attribute := CreateLinearModel(captureInfos, communityID, 2.68, identity.ValidDays, identity.Id)
+				identity, attribute := CreateLinearModel(captureInfos, communityID, 2.68, identity.ValidDays, identity.ID)
 
 				errIdentity := db.UpdateDBPersonLabel(identity)
 				if errIdentity != nil {

--
Gitblit v1.8.0