package controller import ( "enterprise/common/config" "enterprise/common/dao" "enterprise/server/api" "enterprise/server/service" "enterprise/server/session" "github.com/gin-gonic/gin" "github.com/spf13/cast" "net/http" "strings" "time" ) type Staff struct { } func NewStaff() *Staff { return &Staff{} } func (s *Staff) Login(ctx *gin.Context) { var req api.StaffLoginReq session.CheckParamError(ctx.ShouldBindJSON(&req)) sess := ctx.Keys[session.ContextSession].(*session.AdminSession) data := service.NewStaffUser().Login(sess, &req) ctx.JSON(http.StatusOK, session.NewRsp(data)) } func (s *Staff) Suggest(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) staffs, _, err := dao.NewStaffUserDao().Query(1, -1, sess.GetCorpId(), 0, "", "", "", "") session.CheckDBError(err) items := make([]map[string]interface{}, 0) for _, st := range staffs { mp := make(map[string]interface{}) mp["userid"] = cast.ToString(st.Id) mp["username"] = cast.ToString(st.Username) mp["realname"] = cast.ToString(st.Realname) items = append(items, mp) } ctx.JSON(http.StatusOK, session.NewRsp(items)) } func (s *Staff) List(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) var req api.StaffListReq session.CheckParamError(ctx.ShouldBind(&req)) req.Default() total, items := service.NewStaffUser().List(sess, &req) ctx.JSON(http.StatusOK, session.NewListRsp(total, items)) } func (s *Staff) Create(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) if !sess.GetAdmin().GetConfig().IsHr() { panic(config.ErrPriv.New()) } var req api.StaffCreateReq session.CheckParamError(ctx.ShouldBindJSON(&req)) ctx.Keys[session.ContextRequest] = req service.NewStaffUser().Create(sess, &req) ctx.JSON(http.StatusOK, session.NewRspOk()) } func (s *Staff) Update(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) if !sess.GetAdmin().GetConfig().IsHr() { panic(config.ErrPriv.New()) } var req api.StaffUpdateReq session.CheckParamError(ctx.ShouldBindJSON(&req)) ctx.Keys[session.ContextRequest] = req service.NewStaffUser().Update(sess, &req) ctx.JSON(http.StatusOK, session.NewRspOk()) } func (s *Staff) Delete(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) if !sess.GetAdmin().GetConfig().IsHr() { panic(config.ErrPriv.New()) } id := cast.ToInt64(ctx.Query("id")) session.CheckDBError(dao.NewStaffUserDao().Delete(id)) ctx.JSON(http.StatusOK, session.NewRspOk()) } func (s *Staff) Pay(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) if !sess.GetAdmin().GetConfig().IsAdmin() { panic(config.ErrPriv.New()) } var req api.StaffPayReq session.CheckParamError(ctx.ShouldBindJSON(&req)) ctx.Keys[session.ContextRequest] = req service.NewStaffUser().Pay(sess, &req) ctx.JSON(http.StatusOK, session.NewRspOk()) } func (s *Staff) Salary(ctx *gin.Context) { sess := ctx.Keys[session.ContextSession].(*session.AdminSession) month := ctx.Query("month") tp := ctx.Query("type") corp, err := dao.NewCorpDao().GetByHost(sess.GetHeader().Host) session.CheckDBError(err) session.CheckNilError(corp, "企业不存在") if month == "" { month = time.Now().AddDate(0, -1, 0).Format("200601") } month = strings.ReplaceAll(month, "-", "") if tp == "" { tp = service.StaffSalaryTypeSummary } serv := new(service.StaffSalary) if tp == service.StaffSalaryTypeAgent { serv.Agent(corp.Id, month, ctx) } else if tp == service.StaffSalaryTypeBank { serv.Bank(corp.Id, month, ctx) } else { serv.Summary(corp.Id, month, ctx) } }