package controller import ( "enterprise/common/dao" "enterprise/common/model" "enterprise/server/api" "enterprise/server/session" "github.com/gin-gonic/gin" "github.com/smbrave/goutil" "github.com/spf13/cast" "net/http" ) type Calculator struct{} func NewCalculator() *Calculator { return &Calculator{} } // Create 创建一个新的计算项 func (c *Calculator) Create(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) var req api.CreateCalculatorReq session.CheckParamError(ctx.ShouldBindJSON(&req)) ctx.Keys[session.ContextRequest] = req calculator := new(model.SalaryCalculator) calculator.CorpId = sess.GetAdmin().CorpId calculator.Name = req.Name calculator.Expression = req.Expression _, err := dao.NewSalaryCalculatorDao().Create(calculator) session.CheckDBError(err) ctx.JSON(http.StatusOK, session.NewRspOk()) } // Update 更新已有的计算项 func (c *Calculator) Update(ctx *gin.Context) { var req api.UpdateCalculatorReq session.CheckParamError(ctx.ShouldBindJSON(&req)) ctx.Keys[session.ContextRequest] = req calculator, err := dao.NewSalaryCalculatorDao().Get(cast.ToInt64(req.Id)) session.CheckDBError(err) session.CheckNilError(calculator, "计算项不存在") calculator.Name = goutil.If(req.Name != "", req.Name, calculator.Name) calculator.Expression = goutil.If(req.Expression != "", req.Expression, calculator.Expression) err = dao.NewSalaryCalculatorDao().Update(calculator) session.CheckDBError(err) ctx.JSON(http.StatusOK, session.NewRspOk()) } // Delete 删除指定的计算项 func (c *Calculator) Delete(ctx *gin.Context) { id := cast.ToInt64(ctx.Query("id")) session.CheckDBError(dao.NewSalaryCalculatorDao().Delete(id)) ctx.JSON(http.StatusOK, session.NewRspOk()) } // List 列出符合条件的计算项 func (c *Calculator) List(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) var req api.ListCalculatorReq session.CheckParamError(ctx.ShouldBind(&req)) req.Default() calculators, total, err := dao.NewSalaryCalculatorDao().Query(req.Page, req.Size, sess.GetCorpId(), req.Name) session.CheckDBError(err) items := make([]*api.Calculator, 0) for _, calc := range calculators { i := new(api.Calculator) i.From(calc) items = append(items, i) } ctx.JSON(http.StatusOK, session.NewListRsp(total, items)) }