diff --git a/common/dao/staff_user.go b/common/dao/staff_user.go index 42a570c..f5e21bc 100644 --- a/common/dao/staff_user.go +++ b/common/dao/staff_user.go @@ -82,21 +82,35 @@ func (d *StaffUserDao) GetByPhone(corpId int64, phone string) (*model.StaffUser, return &u, nil } -func (d *StaffUserDao) Query(corpId int64, status int) ([]*model.StaffUser, error) { +func (d *StaffUserDao) Query(page, size int, corpId int64, status int, username, realname, phone, idno string) ([]*model.StaffUser, int64, error) { var u []*model.StaffUser tx := GetDB().Table(d.TableName()) tx.Where("corp_id = ?", corpId) if status != 0 { tx = tx.Where("status = ?", status) } - + if username != "" { + tx.Where("username = ?", username) + } + if realname != "" { + tx.Where("realname = ?", realname) + } + if phone != "" { + tx.Where("phone = ?", phone) + } + if idno != "" { + tx.Where("idno = ?", idno) + } + var count int64 + tx.Count(&count) + tx.Offset((page - 1) * size).Limit(size) res := tx.Find(&u) if res.Error == gorm.ErrRecordNotFound { - return nil, nil + return nil, 0, nil } if res.Error != nil { - return nil, res.Error + return nil, 0, res.Error } - return u, nil + return u, count, nil } diff --git a/common/model/staff_user.go b/common/model/staff_user.go index d184a88..06d290c 100644 --- a/common/model/staff_user.go +++ b/common/model/staff_user.go @@ -9,8 +9,9 @@ var ( ) type UserSalary struct { - Base string `json:"base"` //基本工资 - Target string `json:"target"` //绩效工资 + Base string `json:"base"` //基本工资 + Target string `json:"target"` //绩效工资 + Calculator string `json:"calculator"` //工资计算器 } type UserPayee struct { diff --git a/server/api/staff.go b/server/api/staff.go index 15d95d4..8edd667 100644 --- a/server/api/staff.go +++ b/server/api/staff.go @@ -1,12 +1,40 @@ package api +import ( + "enterprise/common/model" + "github.com/smbrave/goutil" + "github.com/spf13/cast" +) + type StaffLoginReq struct { Username string `json:"username"` Password string `json:"password"` } +type StaffUser struct { + Id string `json:"id"` + Phone string `json:"phone"` + Idno string `json:"idno"` + Username string `json:"username"` + Realname string `json:"realname"` + EntryDate string `json:"entry_date"` + OfficialDate string `json:"official_date"` + LeaveDate string `json:"leave_date"` + Config string `json:"config"` + Status string `json:"status"` + + SalaryBase string `json:"salary_base"` + SalaryTarget string `json:"salary_target"` + SalaryCalculator string `json:"salary_calculator"` + + PayeeBankName string `json:"payee_bank_name"` + PayeeBankCard string `json:"payee_bank_card"` + PayeeApliayUid string `json:"payee_apliay_uid"` +} + type StaffListReq struct { BaseRequest + Status string `form:"status"` Phone string `form:"phone"` Idno string `form:"idno"` Username string `form:"username"` @@ -26,6 +54,8 @@ type StaffUpdateReq struct { EntryDate string `json:"entry_date"` OfficialDate string `json:"official_date"` LeaveDate string `json:"leave_date"` + Config string `json:"config"` + Status string `json:"status"` SalaryBase string `json:"salary_base"` SalaryTarget string `json:"salary_target"` @@ -33,7 +63,19 @@ type StaffUpdateReq struct { PayeeBankName string `json:"payee_bank_name"` PayeeBankCard string `json:"payee_bank_card"` - PayeeApliayUid string `json:"payee_apliay_uid"` - - Config string `json:"config"` + PayeeAlipayUid string `json:"payee_alipay_uid"` +} + +func (s *StaffUser) From(m *model.StaffUser) { + goutil.CopyStruct(s, m) + s.Id = cast.ToString(m.Id) + s.Status = cast.ToString(m.Status) + salary := m.GetSalary() + payee := m.GetPayee() + s.SalaryBase = salary.Base + s.SalaryTarget = salary.Target + s.SalaryCalculator = salary.Calculator + s.PayeeBankName = payee.BankName + s.PayeeBankCard = payee.BankCard + s.PayeeApliayUid = payee.AlipayUid } diff --git a/server/controller/staff.go b/server/controller/staff.go index a66a4ec..9eacc8a 100644 --- a/server/controller/staff.go +++ b/server/controller/staff.go @@ -31,7 +31,21 @@ func (s *Staff) Login(ctx *gin.Context) { } 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() + 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) + items = append(items, i) + } + + ctx.JSON(http.StatusOK, session.NewListRsp(total, items)) } func (s *Staff) Create(ctx *gin.Context) { @@ -67,16 +81,20 @@ func (s *Staff) Update(ctx *gin.Context) { staffUser.EntryDate = goutil.If(req.EntryDate != "", req.EntryDate, staffUser.EntryDate) staffUser.OfficialDate = goutil.If(req.OfficialDate != "", req.OfficialDate, staffUser.OfficialDate) staffUser.LeaveDate = goutil.If(req.LeaveDate != "", req.LeaveDate, staffUser.LeaveDate) + staffUser.Config = goutil.If(req.Config != "", req.Config, staffUser.Config) + staffUser.Status = goutil.If(req.Status != "", cast.ToInt(req.Status), staffUser.Status) staffSalary := staffUser.GetSalary() - staffPayee := staffUser.GetPayee() staffSalary.Base = goutil.If(req.SalaryBase != "", req.SalaryBase, staffSalary.Base) staffSalary.Target = goutil.If(req.SalaryTarget != "", req.SalaryTarget, staffSalary.Target) + staffSalary.Calculator = goutil.If(req.SalaryCalculator != "", req.SalaryCalculator, staffSalary.Calculator) + staffUser.Salary = goutil.EncodeJSON(staffSalary) + + staffPayee := staffUser.GetPayee() staffPayee.BankName = goutil.If(req.PayeeBankName != "", req.PayeeBankName, staffPayee.BankName) staffPayee.BankCard = goutil.If(req.PayeeBankCard != "", req.PayeeBankCard, staffPayee.BankCard) - staffPayee.AlipayUid = goutil.If(req.PayeeApliayUid != "", req.PayeeApliayUid, staffPayee.AlipayUid) - - staffUser.Config = goutil.If(req.Config != "", req.Config, staffUser.Config) + staffPayee.AlipayUid = goutil.If(req.PayeeAlipayUid != "", req.PayeeAlipayUid, staffPayee.AlipayUid) + staffUser.Payee = goutil.EncodeJSON(staffPayee) err = dao.NewStaffUserDao().Update(staffUser) session.CheckDBError(err) diff --git a/worker/staff.go b/worker/staff.go index 4071158..13daecd 100644 --- a/worker/staff.go +++ b/worker/staff.go @@ -20,7 +20,7 @@ func NewStaff() *Staff { return &Staff{} } func (s *Staff) MontorWorkAge(corpId int64) { - staffs, err := dao.NewStaffUserDao().Query(corpId, model.StaffUserStatusOnline) + staffs, _, err := dao.NewStaffUserDao().Query(1, -1, corpId, model.StaffUserStatusOnline, "", "", "", "") if err != nil { log.Errorf("db error :%s", err.Error()) return @@ -118,7 +118,7 @@ func (s *Staff) SyncStaffSalary(corpId int64, month string) { } month = strings.ReplaceAll(month, "-", "") - staffs, err := dao.NewStaffUserDao().Query(corpId, 0) + staffs, _, err := dao.NewStaffUserDao().Query(1, -1, corpId, 0, "", "", "", "") if err != nil { log.Errorf("query staff db error :%s", err.Error()) return