From 067650e77790adeb5222b7736649cb5b6b016162 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 28 四月 2024 10:49:44 +0800
Subject: [PATCH] 时间范围和该工人以往添加记录重复性校验
---
controllers/worker_position_controller.go | 20 +++++++++++++-------
utils/timex.go | 1 +
models/worker_position.go | 24 ++++++++++++++++++------
3 files changed, 32 insertions(+), 13 deletions(-)
diff --git a/controllers/worker_position_controller.go b/controllers/worker_position_controller.go
index 5512fc9..c66e5c3 100644
--- a/controllers/worker_position_controller.go
+++ b/controllers/worker_position_controller.go
@@ -8,7 +8,6 @@
"silkserver/extend/util"
"silkserver/middleware"
"silkserver/models"
- "silkserver/utils"
)
type WorkerPositionController struct {
@@ -31,12 +30,10 @@
}
//鏌ヨ鏄惁閲嶅
- old, err := models.NewWorkerPositionSearch().SetWorkerID(params.WorkerId).First()
+ _, err = models.NewWorkerPositionSearch().SetWorkerID(params.WorkerId).SetOverlappingDate(params.StartDate, params.EndDate).First()
if err == nil {
- if utils.IsOverlap(params.StartDate, params.EndDate, old.StartDate, old.EndDate) {
- util.ResponseFormat(c, code.RequestParamError, "璇峰嬁閲嶅娣诲姞")
- return
- }
+ util.ResponseFormat(c, code.RequestParamError, "鏃堕棿鑼冨洿鍜岃宸ヤ汉浠ュ線娣诲姞璁板綍鏈夐噸澶嶏紝璇锋鏌�")
+ return
}
record := &models.WorkerPosition{
@@ -83,6 +80,15 @@
return
}
+ //鏌ヨ鏄惁閲嶅
+ old, err := models.NewWorkerPositionSearch().SetWorkerID(params.WorkerId).First()
+ if err == nil {
+ if old.ID != params.Id {
+ util.ResponseFormat(c, code.RequestParamError, "鏃堕棿鑼冨洿鍜岃宸ヤ汉浠ュ線娣诲姞璁板綍鏈夐噸澶嶏紝璇锋鏌�")
+ return
+ }
+ }
+
record := &models.WorkerPosition{
StartDate: params.StartDate,
EndDate: params.EndDate,
@@ -122,7 +128,7 @@
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
return
}
- WorkerPositions, total, err := models.NewWorkerPositionSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetPreload().Find()
+ WorkerPositions, total, err := models.NewWorkerPositionSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetPreload().SetOrder("id desc").Find()
if err != nil {
util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
return
diff --git a/models/worker_position.go b/models/worker_position.go
index 0c3653d..07a9861 100644
--- a/models/worker_position.go
+++ b/models/worker_position.go
@@ -23,12 +23,14 @@
}
WorkerPositionSearch struct {
WorkerPosition
- Order string
- PageNum int
- PageSize int
- Orm *gorm.DB
- Preload bool
- Keyword string
+ Order string
+ PageNum int
+ PageSize int
+ Orm *gorm.DB
+ Preload bool
+ Keyword string
+ OverlappingDateStart string
+ OverlappingDateEnd string
}
)
@@ -85,6 +87,12 @@
return slf
}
+func (slf *WorkerPositionSearch) SetOverlappingDate(startDate string, endDate string) *WorkerPositionSearch {
+ slf.OverlappingDateStart = startDate
+ slf.OverlappingDateEnd = endDate
+ return slf
+}
+
func (slf *WorkerPositionSearch) build() *gorm.DB {
var db = slf.Orm.Table(slf.TableName())
@@ -117,6 +125,10 @@
db = db.Model(&WorkerPosition{}).Preload("Worker")
}
+ if slf.OverlappingDateStart != "" && slf.OverlappingDateEnd != "" {
+ db = db.Where("start_date <= ? and end_date >= ?", slf.OverlappingDateEnd, slf.OverlappingDateStart)
+ }
+
return db
}
diff --git a/utils/timex.go b/utils/timex.go
index 8a6ea02..230c96e 100644
--- a/utils/timex.go
+++ b/utils/timex.go
@@ -14,5 +14,6 @@
if startTime1.After(endTime2) || endTime1.Before(startTime2) {
return false
}
+
return true
}
--
Gitblit v1.8.0