From d6aea9913510936bde157e22a1f7042a0eb33ac3 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 28 四月 2024 10:36:50 +0800
Subject: [PATCH] 时间范围和该工人以往添加记录重复性校验

---
 controllers/worker_position_controller.go |   12 +++++++-----
 utils/timex.go                            |   18 ++++++++++++++++++
 controllers/request/fineness.go           |   12 ++++++------
 controllers/mentor_controller.go          |    2 +-
 4 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/controllers/mentor_controller.go b/controllers/mentor_controller.go
index 0eaaa56..4daea9b 100644
--- a/controllers/mentor_controller.go
+++ b/controllers/mentor_controller.go
@@ -116,7 +116,7 @@
 		util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�")
 		return
 	}
-	mentors, total, err := models.NewMentorSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetPreload(true).Find()
+	mentors, total, err := models.NewMentorSearch().SetPage(params.Page, params.PageSize).SetKeyword(params.Keyword).SetPreload(true).SetOrder("id desc").Find()
 	if err != nil {
 		util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触")
 		return
diff --git a/controllers/request/fineness.go b/controllers/request/fineness.go
index 2c0cd71..026ff9c 100644
--- a/controllers/request/fineness.go
+++ b/controllers/request/fineness.go
@@ -5,18 +5,18 @@
 )
 
 type AddFinenessRegister struct {
-	ID            uint            `json:"id"`                                                                //id 娣诲姞鏃朵紶0
+	ID            uint            `json:"id"`                                                              //id 娣诲姞鏃朵紶0
 	Number        string          `gorm:"type:varchar(255);not null;comment:缂栧彿" json:"number"`             //缂栧彿
-	FinishDate    string          `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"`     //钀戒笣鏃堕棿
+	FinishDate    string          `gorm:"type:varchar(255);not null;comment:钀戒笣鏃堕棿" json:"finishDate"`       //钀戒笣鏃堕棿
 	Workshop      string          `gorm:"type:varchar(255);not null;comment:杞﹂棿" json:"name"`               //杞﹂棿
 	WorkshopGroup int             `gorm:"type:int(11);not null;default:0;comment:杞︾粍" json:"workshopGroup"` //杞︾粍
 	Market        string          `gorm:"type:varchar(255);not null;comment:搴勫彛" json:"market"`             //搴勫彛
 	Spec          string          `gorm:"type:varchar(255);not null;comment:瑙勬牸" json:"spec"`               //瑙勬牸
 	Circle        uint8           `gorm:"not null;comment:鍥炴暟" json:"circle"`                               //鍥炴暟
-	TotalCircle   uint8           `gorm:"not null;comment:鎬诲洖鏁�" json:"totalCircle"`                        //鎬诲洖鏁�
-	FinenessList  []FinenessItem  `json:"finenessList"`                                                      //绾ゅ害鏁扮粍
-	SumFineness   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"`   //鍚堣绾ゅ害
-	SumQuantity   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"`   //鍚堣鏁伴噺
+	TotalCircle   uint8           `gorm:"not null;comment:鎬诲洖鏁�" json:"totalCircle"`                         //鎬诲洖鏁�
+	FinenessList  []FinenessItem  `json:"finenessList"`                                                    //绾ゅ害鏁扮粍
+	SumFineness   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣绾ゅ害" json:"sumFineness"`     //鍚堣绾ゅ害
+	SumQuantity   decimal.Decimal `gorm:"type:decimal(12,2);not null;comment:鍚堣鏁伴噺" json:"sumQuantity"`     //鍚堣鏁伴噺
 	Position      int             `gorm:"not null;default:0;comment:杞﹀彿" json:"position"`                   //鏈�鍚庝竴涓溅鍙�
 }
 
diff --git a/controllers/worker_position_controller.go b/controllers/worker_position_controller.go
index 51015a3..5512fc9 100644
--- a/controllers/worker_position_controller.go
+++ b/controllers/worker_position_controller.go
@@ -3,12 +3,12 @@
 import (
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/cast"
-	"gorm.io/gorm"
 	"silkserver/controllers/request"
 	"silkserver/extend/code"
 	"silkserver/extend/util"
 	"silkserver/middleware"
 	"silkserver/models"
+	"silkserver/utils"
 )
 
 type WorkerPositionController struct {
@@ -31,10 +31,12 @@
 	}
 
 	//鏌ヨ鏄惁閲嶅
-	_, err = models.NewWorkerPositionSearch().SetWorkerID(params.WorkerId).First()
-	if err != gorm.ErrRecordNotFound {
-		util.ResponseFormat(c, code.RequestParamError, "璇峰嬁閲嶅娣诲姞")
-		return
+	old, err := models.NewWorkerPositionSearch().SetWorkerID(params.WorkerId).First()
+	if err == nil {
+		if utils.IsOverlap(params.StartDate, params.EndDate, old.StartDate, old.EndDate) {
+			util.ResponseFormat(c, code.RequestParamError, "璇峰嬁閲嶅娣诲姞")
+			return
+		}
 	}
 
 	record := &models.WorkerPosition{
diff --git a/utils/timex.go b/utils/timex.go
new file mode 100644
index 0000000..8a6ea02
--- /dev/null
+++ b/utils/timex.go
@@ -0,0 +1,18 @@
+package utils
+
+import "time"
+
+// IsOverlap 鍒ゆ柇涓や釜鏃堕棿娈垫槸鍚︽湁閲嶅彔
+func IsOverlap(start1, end1, start2, end2 string) bool {
+	layout := "2006-01-02"
+	startTime1, _ := time.Parse(layout, start1)
+	endTime1, _ := time.Parse(layout, end1)
+	startTime2, _ := time.Parse(layout, start2)
+	endTime2, _ := time.Parse(layout, end2)
+
+	// 濡傛灉涓�涓椂闂存鐨勫紑濮嬫椂闂村湪鍙︿竴涓椂闂存涔嬪悗锛屾垨缁撴潫鏃堕棿鍦ㄥ彟涓�涓椂闂存涔嬪墠锛屽垯鏃犻噸鍙�
+	if startTime1.After(endTime2) || endTime1.Before(startTime2) {
+		return false
+	}
+	return true
+}

--
Gitblit v1.8.0