78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
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))
|
|
}
|