enterprise/server/service/staff_user.go

91 lines
3.2 KiB
Go
Raw Normal View History

2025-03-07 12:05:59 +08:00
package service
import (
"enterprise/common/dao"
"enterprise/common/model"
"enterprise/server/api"
"enterprise/server/session"
"github.com/google/uuid"
log "github.com/sirupsen/logrus"
"github.com/smbrave/goutil"
2025-03-12 21:42:27 +08:00
"github.com/spf13/cast"
2025-03-07 12:05:59 +08:00
"time"
)
type StaffUser struct {
}
2025-03-12 21:42:27 +08:00
func NewStaffUser() *StaffUser {
return &StaffUser{}
}
2025-03-07 12:05:59 +08:00
func (s *StaffUser) Login(sess *session.AdminSession, req *api.StaffLoginReq) interface{} {
host := sess.GetHeader().Host
log.Infof("login host[%s] req[%s]", host, goutil.EncodeJSON(req))
corp, err := dao.NewCorpDao().GetByHost(host)
session.CheckDBError(err)
session.CheckNilError(corp, "企业不存在的域名")
user, err := dao.NewStaffUserDao().GetByUsername(corp.Id, req.Username)
session.CheckDBError(err)
session.CheckNilError(user, "企业用户不存在")
2025-03-11 15:01:26 +08:00
if user.Password == "" || user.Password != req.Password {
2025-03-07 12:05:59 +08:00
panic("密码错误")
}
token := new(model.StaffToken)
token.UserId = user.Id
token.ExpireTime = time.Now().Unix() + 86400
token.Token = uuid.New().String()
_, err = dao.NewStaffTokenDao().Create(token)
session.CheckDBError(err)
2025-03-07 12:27:28 +08:00
data := token.ToLogin()
data["username"] = user.Username
data["realname"] = user.Realname
return data
2025-03-07 12:05:59 +08:00
}
2025-03-12 21:42:27 +08:00
func (s *StaffUser) Update(sess *session.AdminSession, req *api.StaffUpdateReq) {
staffUser, err := dao.NewStaffUserDao().Get(cast.ToInt64(req.Id))
session.CheckDBError(err)
session.CheckNilError(staffUser, "用户不存在")
staffUser.Username = goutil.If(req.Username != "", req.Username, staffUser.Username)
staffUser.Realname = goutil.If(req.Realname != "", req.Realname, staffUser.Realname)
staffUser.Phone = goutil.If(req.Phone != "", req.Phone, staffUser.Phone)
staffUser.Idno = goutil.If(req.Idno != "", req.Idno, staffUser.Idno)
staffUser.EntryDate = goutil.If(req.EntryDate != "", req.EntryDate, staffUser.EntryDate)
staffUser.OfficialDate = goutil.If(req.OfficialDate != "", req.OfficialDate, staffUser.OfficialDate)
staffUser.Config = goutil.If(req.Config != "", req.Config, staffUser.Config)
staffSalary := staffUser.GetSalary()
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.PayeeAlipayUid != "", req.PayeeAlipayUid, staffPayee.AlipayUid)
staffUser.Payee = goutil.EncodeJSON(staffPayee)
//状态处理
if req.Status != "" {
status := cast.ToInt(req.Status)
staffUser.Status = goutil.If(req.Status != "", cast.ToInt(req.Status), staffUser.Status)
if status == model.StaffUserStatusOffline {
staffUser.LeaveDate = goutil.If(req.LeaveDate != "", req.LeaveDate, staffUser.LeaveDate)
} else {
staffUser.LeaveDate = ""
}
}
err = dao.NewStaffUserDao().Update(staffUser)
session.CheckDBError(err)
}