package model import ( "encoding/json" butil "enterprise/base/util" "github.com/smbrave/goutil" "github.com/spf13/cast" "strings" ) type StaffSalary struct { Id int64 CorpId int64 UserId int64 Username string Month string Salary float64 AttendSalary float64 TargetSalary float64 AwardSalary float64 OtherSalary float64 ShouldDay int AttendDay float64 HolidayDay float64 SocialDeduct float64 HouseDeduct float64 PersonalDeduct float64 OtherDeduct float64 CreateTime int64 UpdateTime int64 Extra string Comment string } func (s *StaffSalary) GetShouldSalary() float64 { return butil.FloatCut(s.AttendSalary + s.TargetSalary + s.AwardSalary + s.OtherSalary) } func (s *StaffSalary) GetRealSalary() float64 { return butil.FloatCut(s.AttendSalary + s.TargetSalary + s.AwardSalary + s.OtherSalary - s.SocialDeduct - s.HouseDeduct - s.PersonalDeduct - s.OtherDeduct) } func (s *StaffSalary) SetExtra(key string, value interface{}) { var extra map[string]interface{} json.Unmarshal([]byte(s.Extra), &extra) extra[key] = value s.Extra = goutil.EncodeJSON(extra) } type StaffSalarySort []*StaffSalary func (s StaffSalarySort) Len() int { return len(s) } func (s StaffSalarySort) Less(i, j int) bool { var iExtra map[string]string var jExtra map[string]string json.Unmarshal([]byte(s[i].Extra), &iExtra) json.Unmarshal([]byte(s[j].Extra), &jExtra) return cast.ToInt64(strings.ReplaceAll(iExtra["entryDate"], "-", "")) < cast.ToInt64(strings.ReplaceAll(jExtra["entryDate"], "-", "")) } func (s StaffSalarySort) Swap(i, j int) { s[i], s[j] = s[j], s[i] }