zhangqian
2024-04-28 067650e77790adeb5222b7736649cb5b6b016162
时间范围和该工人以往添加记录重复性校验
3个文件已修改
45 ■■■■ 已修改文件
controllers/worker_position_controller.go 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/worker_position.go 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/timex.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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, "参数解析失败,数据类型错误")
        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
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
}
utils/timex.go
@@ -14,5 +14,6 @@
    if startTime1.After(endTime2) || endTime1.Before(startTime2) {
        return false
    }
    return true
}