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 | 135 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 132 insertions(+), 3 deletions(-) diff --git a/controllers/salary_plan_controller.go b/controllers/salary_plan_controller.go index 1aa74b4..0212979 100644 --- a/controllers/salary_plan_controller.go +++ b/controllers/salary_plan_controller.go @@ -2,6 +2,8 @@ import ( "github.com/gin-gonic/gin" + "gorm.io/gorm" + "silkserver/constvar" "silkserver/controllers/request" "silkserver/extend/code" "silkserver/extend/util" @@ -20,7 +22,7 @@ // @Tags 鍛樺伐钖祫/钖叕鏂规 // @Summary 淇濆瓨钖叕鏂规 // @Produce application/json -// @Param object body models.SaveSalaryPlan true "鍙傛暟" +// @Param object body models.SalaryPlan true "鍙傛暟" // @Param Authorization header string true "token" // @Success 200 {object} util.Response "鎴愬姛" // @Router /api-jl/v1/salary/saveSalaryPlan [post] @@ -69,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 @@ -82,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] @@ -104,3 +106,130 @@ } util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛") } + +// SaveSalaryType +// +// @Tags 鍛樺伐钖祫/钖叕鏂规 +// @Summary 淇濆瓨钖祫绫诲瀷 +// @Produce application/json +// @Param object body request.SalaryType true "鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-jl/v1/salary/saveSalaryType [post] +func (slf SalaryPlanController) SaveSalaryType(c *gin.Context) { + var params request.SalaryType + err := c.BindJSON(¶ms) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") + return + } + if params.Type == 0 { + util.ResponseFormat(c, code.RequestParamError, "绫诲瀷涓嶈兘涓虹┖") + return + } + 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 + add = append(add, &dict) + } + + err = models.WithTransaction(func(db *gorm.DB) error { + if len(del) > 0 { + err = models.NewMiniDictSearch().SetOrm(db).SetIds(del).Delete() + 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 { + util.ResponseFormat(c, code.RequestParamError, "淇濆瓨澶辫触") + return + } + util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛") +} + +// GetSalaryTypeList +// +// @Tags 鍛樺伐钖祫/钖叕鏂规 +// @Summary 鑾峰彇钖祫绫诲瀷鍒楄〃 +// @Produce application/json +// @Param number path string true "type" "鍙傛暟" +// @Param Authorization header string true "token" +// @Success 200 {object} util.ResponseList{data=[]models.MiniDict} "鎴愬姛" +// @Router /api-jl/v1/salary/getSalaryTypeList/{type} [get] +func (slf SalaryPlanController) GetSalaryTypeList(c *gin.Context) { + tp := c.Param("type") + if tp == "" { + util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鐨勭被鍨�") + return + } + atoi, _ := strconv.Atoi(tp) + if atoi == 0 { + util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鐨勭被鍨�") + return + } + dicts, err := models.NewMiniDictSearch().SetType(constvar.MiniDictType(atoi)).FindNotTotal() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ヨ澶辫触") + return + } + util.ResponseFormat(c, code.Success, dicts) +} -- Gitblit v1.8.0