From 28c5cf41c5064579dd62f79fd40dc5990e9565b2 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期一, 09 九月 2024 20:52:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
db/repository.go | 53 +++++++--
cache/device.go | 20 ++++
.idea/workspace.xml | 144 +++-------------------------
db/database.go | 3
db/models.go | 15 +++
main.go | 7 +
task/engine.go | 24 ++++
7 files changed, 124 insertions(+), 142 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5974bc7..d901054 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,17 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
- <list default="true" id="919111b8-f2aa-4154-8db0-88e76c9af55d" name="Default Changelist" comment="1銆佷慨鏀规煡璇㈢瓥鐣� 2銆佷慨鏀瑰湴鍧�缁熻绛栫暐">
- <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/config/config.go" beforeDir="false" afterPath="$PROJECT_DIR$/config/config.go" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/config/rulemodelengine.yaml" beforeDir="false" afterPath="$PROJECT_DIR$/config/rulemodelengine.yaml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/data/prepare.go" beforeDir="false" afterPath="$PROJECT_DIR$/data/prepare.go" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/db/elastic.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/elastic.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 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" />
</list>
- <ignored path="$PROJECT_DIR$/out/" />
- <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
@@ -19,109 +11,6 @@
</component>
<component name="FavoritesManager">
<favorites_list name="ruleModelEngine" />
- </component>
- <component name="FileEditorManager">
- <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/rule/service.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="179">
- <caret line="11" column="4" selection-start-line="11" selection-start-column="4" selection-end-line="11" selection-end-column="4" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="true">
- <entry file="file://$PROJECT_DIR$/data/prepare.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="71">
- <caret line="17" column="36" lean-forward="true" selection-start-line="17" selection-start-column="36" selection-end-line="17" selection-end-column="36" />
- <folding>
- <element signature="e#14#61#0" expanded="true" />
- </folding>
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/rule/identityEngine.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="48">
- <caret line="5" column="1" lean-forward="true" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/config/config.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="737">
- <caret line="46" column="48" lean-forward="true" selection-start-line="46" selection-start-column="48" selection-end-line="46" selection-end-column="48" />
- <folding>
- <element signature="e#16#89#0" expanded="true" />
- </folding>
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/config/rulemodelengine.yaml">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="337">
- <caret line="30" column="19" selection-start-line="30" selection-start-column="17" selection-end-line="30" selection-end-column="19" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/db/elastic.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="192">
- <caret line="29" column="70" selection-start-line="29" selection-start-column="70" selection-end-line="29" selection-end-column="70" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/db/elasticScriptToId.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="840">
- <caret line="39" column="46" lean-forward="true" selection-start-line="39" selection-start-column="46" selection-end-line="39" selection-end-column="46" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/rule/engine.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="189">
- <caret line="8" column="4" selection-start-line="8" selection-start-column="4" selection-end-line="8" selection-end-column="4" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/db/models.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="193">
- <caret line="152" column="11" selection-start-line="152" selection-start-column="11" selection-end-line="152" selection-end-column="11" />
- </state>
- </provider>
- </entry>
- </file>
- <file pinned="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/db/repository.go">
- <provider selected="true" editor-type-id="text-editor">
- <state relative-caret-position="162">
- <caret line="105" column="5" selection-start-line="105" selection-start-column="5" selection-end-line="105" selection-end-column="5" />
- <folding>
- <element signature="e#12#78#0" expanded="true" />
- </folding>
- </state>
- </provider>
- </entry>
- </file>
- </leaf>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@@ -164,9 +53,17 @@
<find>time</find>
</findStrings>
</component>
- <component name="GOROOT" path="C:/Program Files/Go" />
+ <component name="GOROOT" url="file://D:/Go" />
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+ </component>
+ <component name="GitSEFilterConfiguration">
+ <file-type-list>
+ <filtered-out-file-type name="LOCAL_BRANCH" />
+ <filtered-out-file-type name="REMOTE_BRANCH" />
+ <filtered-out-file-type name="TAG" />
+ <filtered-out-file-type name="COMMIT_BY_MESSAGE" />
+ </file-type-list>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
@@ -292,7 +189,7 @@
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="restartRequiresConfirmation" value="false" />
- <property name="settings.editor.selected.configurable" value="go.sdk" />
+ <property name="settings.editor.selected.configurable" value="watcher.settings" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
@@ -301,18 +198,6 @@
<key name="CopyFile.RECENT_KEYS">
<recent name="F:\workspace\golang\cloud_ai\ruleModelEngine" />
</key>
- </component>
- <component name="RunDashboard">
- <option name="ruleStates">
- <list>
- <RuleState>
- <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
- </RuleState>
- <RuleState>
- <option name="name" value="StatusDashboardGroupingRule" />
- </RuleState>
- </list>
- </option>
</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">
@@ -550,6 +435,11 @@
</component>
<component name="VgoProject">
<integration-enabled>true</integration-enabled>
+ <environment>
+ <map>
+ <entry key="GOPROXY" value="https://goproxy.cn,direct" />
+ </map>
+ </environment>
<proxy>https://goproxy.cn,direct</proxy>
</component>
<component name="XDebuggerManager">
diff --git a/cache/device.go b/cache/device.go
index 9140696..cd00d50 100644
--- a/cache/device.go
+++ b/cache/device.go
@@ -6,6 +6,8 @@
)
var Device = make(map[string]db.Device)
+var PublicHouse = make(map[string]map[string]string, 0) // 鍏鎴挎暟鎹� 韬唤璇佸彿:灏忓尯
+var PublicHouseAlarmCache = make(map[string]struct{}, 0) // 淇濆瓨鐢充綇涓嶄竴鐨勬暟鎹�, 鍚屼竴涓韩浠借瘉鍙锋殏鏃舵姤璀︿竴娆�
func DeviceCacheInit() error {
var err error
@@ -20,3 +22,21 @@
}
return nil
}
+
+func PublicHouseCacheInit() error {
+ ph, err := db.GetPublicHouseData()
+ if err != nil {
+ logger.Error("GetDeviceData", err)
+ return err
+ }
+
+ for _, v := range ph {
+ if _, ok := PublicHouse[v.CommunityID]; !ok {
+ PublicHouse[v.CommunityID] = make(map[string]string, 0)
+ }
+
+ PublicHouse[v.CommunityID][v.IdCard] = v.EndTime
+ }
+
+ return nil
+}
diff --git a/db/database.go b/db/database.go
index 01e3bd7..43ef00e 100644
--- a/db/database.go
+++ b/db/database.go
@@ -34,6 +34,9 @@
sqlDb.SetMaxOpenConns(1)
sqlDb.SetConnMaxLifetime(time.Duration(120) * time.Second)
sqlDb.SetConnMaxIdleTime(time.Duration(1800) * time.Second)
+
+ db.AutoMigrate(&PublicHouse{})
+
DB = db
return nil
}
diff --git a/db/models.go b/db/models.go
index c48417b..67af5ca 100644
--- a/db/models.go
+++ b/db/models.go
@@ -164,3 +164,18 @@
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/repository.go b/db/repository.go
index 48b4757..ca159f7 100644
--- a/db/repository.go
+++ b/db/repository.go
@@ -4,6 +4,7 @@
"basic.com/valib/logger.git"
"errors"
"gorm.io/gorm"
+ "strconv"
)
// 鏌ヨ灏忓尯琛�
@@ -29,6 +30,17 @@
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
}
// 鏌ヨ鍏ㄩ儴鏁版嵁
@@ -88,18 +100,17 @@
}
// 鏌ヨ浜虹墿灞炴��
-func GetDBPersonStatusData(id string) ([]PersonStatus, error) {
+func GetDBPersonStatus(id, communityId string) string {
var db = DB
- // 鏌ヨ鏁版嵁
- var personStatusList []PersonStatus
- if err := db.Table("person_status").
- Select("documentNumber, status, frequentAddress").
- Where("communityID = ?", id).
- Find(&personStatusList).Error; err != nil {
- return nil, err
- }
- return personStatusList, nil
+ // 鏌ヨ鏁版嵁
+ var personStatus string
+ db.Table("snapshot_count_summary").
+ Select("status").
+ Where("community_id = ? and document_number = ?", communityId, id).
+ Find(&personStatus)
+
+ return personStatus
}
// 鏌ヨ灏忓尯妗f琛� (鍘熸煡璇换鍔″睘鎬�)
@@ -120,7 +131,7 @@
func GetAgeById(id string) (int, error) {
var db = DB
// 鏌ヨ鏁版嵁
- var age int
+ var age string
if err := db.Table("dbtablepersons").
Select("age").
Where("id = ?", id).
@@ -128,7 +139,20 @@
return 0, err
}
- return age, nil
+ 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鍜屼綇鎴峰睘鎬ф煡璇綇鎴锋。妗堢紪鍙�
@@ -169,7 +193,7 @@
// 鏍规嵁dbtablepersons琛╥d鏌ヨ鐩爣妗f骞撮緞
func QueryAgeById(id string) (int, error) {
var db = DB
- var age int
+ var age string
err := db.Table("dbtablepersons").
Select("age").
Where("id = ?", id).
@@ -177,7 +201,8 @@
if err != nil {
return 0, err
}
- return age, nil
+
+ return strconv.Atoi(age)
}
// UpdatePersonInfo 鏇存柊鎴栨彃鍏ュ涓汉鍛樹俊鎭�
diff --git a/main.go b/main.go
index 86e9d3a..e9c8019 100644
--- a/main.go
+++ b/main.go
@@ -36,7 +36,12 @@
logger.Error("璁惧琛ㄧ紦瀛樺け璐�", cacheErr)
return
}
- logger.Info("cache device success !")
+ cacheErr = cache.PublicHouseCacheInit()
+ if cacheErr != nil {
+ logger.Error("鍏鎴挎暟鎹紦瀛樺け璐�", cacheErr)
+ return
+ }
+ logger.Info("cache init success !")
}
func initApiServer() {
diff --git a/task/engine.go b/task/engine.go
index c3b1452..0594e10 100644
--- a/task/engine.go
+++ b/task/engine.go
@@ -62,5 +62,29 @@
}
func registeredAddressNotMatchActualResidence(taskPerson db.TaskPerson) bool {
+ idCard := db.GetIdCardById(taskPerson.DocumentNumber)
+ if idCard == "" {
+ return false
+ }
+
+ if _, ok := cache.PublicHouse[taskPerson.CommunityId]; !ok {
+ return false
+ }
+
+ // 鏈夎韩浠借瘉鍙�, 灏忓尯灞炰簬鍏鎴�, 鍏鎴跨櫥璁拌韩浠借瘉鍙锋病鏈夎鏉¤褰�, 杩斿洖true
+ personStatus := db.GetDBPersonStatus(taskPerson.DocumentNumber, taskPerson.CommunityId)
+ logger.Debugf("Actual residence get person id:%s status: %s", taskPerson.DocumentNumber, personStatus)
+ if personStatus == "resident" || personStatus == "permanent_resident" {
+ if _, ok := cache.PublicHouse[taskPerson.CommunityId][idCard]; !ok {
+ // 鎺у埗绋嬪簭杩愯鏈熼棿鍙緭鍑轰竴娆℃姤璀�
+ if _, ok := cache.PublicHouseAlarmCache[idCard]; ok {
+ return false
+ } else {
+ cache.PublicHouseAlarmCache[idCard] = struct{}{}
+ return true
+ }
+ }
+ }
+
return false
}
--
Gitblit v1.8.0