32 lines
827 B
Go
32 lines
827 B
Go
|
package salary_calculator
|
||
|
|
||
|
import (
|
||
|
"enterprise/common/model"
|
||
|
"enterprise/common/registry"
|
||
|
"github.com/spf13/cast"
|
||
|
)
|
||
|
|
||
|
type SalaryCalculator1002 struct {
|
||
|
corp *model.Corp
|
||
|
user *model.StaffUser
|
||
|
}
|
||
|
|
||
|
func NewSalaryCalculator1002(corp *model.Corp, user *model.StaffUser) registry.SalaryCalculator {
|
||
|
return &SalaryCalculator1002{
|
||
|
corp: corp,
|
||
|
user: user,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) {
|
||
|
userSlary := s.user.GetSalary()
|
||
|
if s.user.Status == model.StaffUserStatusAttach { //挂靠直接算工资
|
||
|
salary.AttendSalary = cast.ToFloat64(userSlary.Base)
|
||
|
salary.TargetSalary = cast.ToFloat64(userSlary.Target)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
salary.AttendSalary = cast.ToFloat64(userSlary.Base) * (salary.AttendDay / float64(salary.ShouldDay))
|
||
|
salary.TargetSalary = cast.ToFloat64(userSlary.Target)
|
||
|
}
|