60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
package salary_calculator
|
|
|
|
import (
|
|
"enterprise/common/dao"
|
|
"enterprise/common/model"
|
|
"enterprise/common/registry"
|
|
log "github.com/sirupsen/logrus"
|
|
"time"
|
|
)
|
|
|
|
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) map[string]interface{} {
|
|
data := make(map[string]interface{})
|
|
|
|
// 1.订单
|
|
monthTime, _ := time.ParseInLocation("200601", salary.Month, time.Local)
|
|
startTime := monthTime.Unix()
|
|
endTime := monthTime.AddDate(0, 1, 0).Unix() - 1
|
|
orders, err := dao.NewExternalCorpOrder().QueryOwnerOrder(s.user.Username, startTime, endTime)
|
|
if err != nil {
|
|
log.Errorf("db error:%s", err.Error())
|
|
}
|
|
|
|
data["orderNum"] = len(orders)
|
|
|
|
//2.处理的订单
|
|
processOrders, err := dao.NewExternalCorpOrder().QueryProcessOrder(s.user.Username, startTime, endTime)
|
|
if err != nil {
|
|
log.Errorf("db error:%s", err.Error())
|
|
}
|
|
data["processNum"] = len(processOrders)
|
|
|
|
//3.下属订单
|
|
corpUser, err := dao.NewExternalCorpUser().Get(s.user.Username)
|
|
if err != nil {
|
|
log.Errorf("db error:%s", err.Error())
|
|
}
|
|
|
|
if corpUser != nil {
|
|
childOrders, err := dao.NewExternalCorpOrder().QueryChildOrder(corpUser.Id, startTime, endTime)
|
|
if err != nil {
|
|
log.Errorf("db error:%s", err.Error())
|
|
}
|
|
data["childOrderNum"] = len(childOrders)
|
|
}
|
|
|
|
return data
|
|
}
|