enterprise/server/controller/staff.go

129 lines
3.6 KiB
Go
Raw Normal View History

2023-09-04 21:59:27 +08:00
package controller
import (
2025-03-09 10:44:36 +08:00
"enterprise/common/dao"
2025-03-07 12:05:59 +08:00
"enterprise/server/api"
2023-09-04 21:59:27 +08:00
"enterprise/server/service"
2023-10-07 14:21:00 +08:00
"enterprise/server/session"
2023-10-07 14:18:46 +08:00
"enterprise/worker"
2023-09-04 21:59:27 +08:00
"github.com/gin-gonic/gin"
2025-03-05 10:11:07 +08:00
"github.com/spf13/cast"
2023-10-07 14:21:00 +08:00
"net/http"
2023-09-04 21:59:27 +08:00
"strings"
"time"
)
type Staff struct {
}
2025-03-11 10:59:41 +08:00
func NewStaff() *Staff {
return &Staff{}
}
2025-03-11 15:01:26 +08:00
2025-03-07 12:05:59 +08:00
func (s *Staff) Login(ctx *gin.Context) {
var req api.StaffLoginReq
session.CheckParamError(ctx.ShouldBindJSON(&req))
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
2025-03-12 21:42:27 +08:00
data := service.NewStaffUser().Login(sess, &req)
2025-03-07 12:17:13 +08:00
ctx.JSON(http.StatusOK, session.NewRsp(data))
2025-03-07 12:05:59 +08:00
}
2025-03-11 19:19:29 +08:00
func (s *Staff) Suggest(ctx *gin.Context) {
2025-03-12 15:29:41 +08:00
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["realnae"] = cast.ToString(st.Realname)
items = append(items, mp)
}
ctx.JSON(http.StatusOK, session.NewRsp(items))
2025-03-11 19:19:29 +08:00
}
2025-03-11 16:09:19 +08:00
func (s *Staff) List(ctx *gin.Context) {
2025-03-11 17:06:52 +08:00
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
var req api.StaffListReq
session.CheckParamError(ctx.ShouldBind(&req))
req.Default()
2025-03-11 16:09:19 +08:00
2025-03-11 17:06:52 +08:00
staffs, total, err := dao.NewStaffUserDao().Query(req.Page, req.Size, sess.GetCorpId(), cast.ToInt(req.Status), req.Username, req.Realname, req.Phone, req.Idno)
session.CheckDBError(err)
items := make([]*api.StaffUser, 0)
for _, st := range staffs {
i := new(api.StaffUser)
i.From(st)
2025-03-12 21:42:27 +08:00
calculator, _ := dao.NewSalaryCalculatorDao().Get(cast.ToInt64(i.SalaryCalculator))
if calculator != nil {
i.SalaryCalculatorName = calculator.Name
}
2025-03-11 17:06:52 +08:00
items = append(items, i)
}
ctx.JSON(http.StatusOK, session.NewListRsp(total, items))
2025-03-11 16:09:19 +08:00
}
func (s *Staff) Create(ctx *gin.Context) {
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
var req api.StaffCreateReq
session.CheckParamError(ctx.ShouldBindJSON(&req))
2025-03-13 10:38:26 +08:00
ctx.Keys[session.ContextRequest] = req
2025-03-12 22:01:34 +08:00
service.NewStaffUser().Create(sess, &req)
2025-03-11 16:09:19 +08:00
ctx.JSON(http.StatusOK, session.NewRspOk())
}
func (s *Staff) Update(ctx *gin.Context) {
var req api.StaffUpdateReq
2025-03-12 21:42:27 +08:00
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
2025-03-11 16:09:19 +08:00
session.CheckParamError(ctx.ShouldBindJSON(&req))
2025-03-13 10:38:26 +08:00
ctx.Keys[session.ContextRequest] = req
2025-03-12 21:42:27 +08:00
service.NewStaffUser().Update(sess, &req)
2025-03-11 16:09:19 +08:00
ctx.JSON(http.StatusOK, session.NewRspOk())
}
func (s *Staff) Delete(ctx *gin.Context) {
id := cast.ToInt64(ctx.Query("id"))
session.CheckDBError(dao.NewStaffUserDao().Delete(id))
ctx.JSON(http.StatusOK, session.NewRspOk())
}
2023-09-04 21:59:27 +08:00
func (s *Staff) Salary(ctx *gin.Context) {
2025-03-09 10:44:36 +08:00
sess := ctx.Keys[session.ContextSession].(*session.AdminSession)
2023-09-04 21:59:27 +08:00
month := ctx.Query("month")
tp := ctx.Query("type")
2025-03-05 10:11:07 +08:00
2025-03-09 10:44:36 +08:00
corp, err := dao.NewCorpDao().GetByHost(sess.GetHeader().Host)
session.CheckDBError(err)
session.CheckNilError(corp, "企业不存在")
2023-09-04 21:59:27 +08:00
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 {
2025-03-09 10:44:36 +08:00
serv.Agent(corp.Id, month, ctx)
2023-09-04 21:59:27 +08:00
} else if tp == service.StaffSalaryTypeBank {
2025-03-09 10:44:36 +08:00
serv.Bank(corp.Id, month, ctx)
2023-09-04 21:59:27 +08:00
} else {
2025-03-09 10:44:36 +08:00
serv.Summary(corp.Id, month, ctx)
2023-09-04 21:59:27 +08:00
}
}
2023-10-07 14:18:46 +08:00
func (s *Staff) SyncStaffSalary(ctx *gin.Context) {
2025-03-05 10:11:07 +08:00
corpId := cast.ToInt64(ctx.Query("cid"))
if corpId == 0 {
corpId = 1000
}
go new(worker.Staff).SyncStaffSalary(corpId, "")
2023-10-07 14:21:00 +08:00
ctx.JSON(http.StatusOK, session.NewRspOk())
2023-10-07 14:18:46 +08:00
}