From 7d06c6472f1acea6b2e49e7b8837bf555e94e219 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 07 五月 2024 16:21:06 +0800 Subject: [PATCH] fox --- controllers/salary_plan_controller.go | 75 ++++++++++++++++++++++++++++++++----- 1 files changed, 64 insertions(+), 11 deletions(-) diff --git a/controllers/salary_plan_controller.go b/controllers/salary_plan_controller.go index 9934ca0..0212979 100644 --- a/controllers/salary_plan_controller.go +++ b/controllers/salary_plan_controller.go @@ -71,7 +71,7 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - find, total, err := models.NewSalaryPlanSearch().SetPage(params.Page, params.PageSize).Find() + find, total, err := models.NewSalaryPlanSearch().SetPage(params.Page, params.PageSize).SetPreload(true).Find() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") return @@ -84,7 +84,7 @@ // @Tags 鍛樺伐钖祫/钖叕鏂规 // @Summary 鍒犻櫎钖叕鏂规 // @Produce application/json -// @Param number path string true "id" +// @Param id path string true "id" // @Param Authorization header string true "token" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-jl/v1/salary/deleteSalaryPlanInfo/{id} [delete] @@ -127,23 +127,76 @@ util.ResponseFormat(c, code.RequestParamError, "绫诲瀷涓嶈兘涓虹┖") return } - types := make([]*models.MiniDict, 0) - for _, value := range params.Values { + miniDicts, err := models.NewMiniDictSearch().SetType(params.Type).FindNotTotal() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, err) + return + } + dicts := params.Values + add := make([]*models.MiniDict, 0) + del := make([]uint, 0) + update := make([]*models.MiniDict, 0) + for _, mini := range miniDicts { + flag := true + for i, value := range dicts { + var dict models.MiniDict + dict.Name = value.Name + dict.IsDefault = value.IsDefault + dict.Type = params.Type + if value.Id == 0 { + add = append(add, &dict) + flag = false + if i < len(dicts)-1 { + dicts = append(dicts[:i], dicts[i+1:]...) + } else { + dicts = dicts[:i] + } + break + } else if value.Id == mini.ID { + dict.ID = mini.ID + update = append(update, &dict) + flag = false + if i < len(dicts)-1 { + dicts = append(dicts[:i], dicts[i+1:]...) + } else { + dicts = dicts[:i] + } + break + } + } + if flag { + del = append(del, mini.ID) + } + } + //鏂板鐨� + for _, value := range dicts { var dict models.MiniDict dict.Name = value.Name dict.IsDefault = value.IsDefault dict.Type = params.Type - types = append(types, &dict) + add = append(add, &dict) } + err = models.WithTransaction(func(db *gorm.DB) error { - err = models.NewMiniDictSearch().SetOrm(db).SetType(params.Type).Delete() - if err != nil { - return err + if len(del) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).SetIds(del).Delete() + if err != nil { + return err + } } - err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(types) - if err != nil { - return err + if len(update) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).SaveBatch(update) + if err != nil { + return err + } } + if len(add) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).CreateBatch(add) + if err != nil { + return err + } + } + return nil }) if err != nil { -- Gitblit v1.8.0