diff --git a/common/dao/external_corp_order.go b/common/dao/external_corp_order.go index 550a468..32eb4f4 100644 --- a/common/dao/external_corp_order.go +++ b/common/dao/external_corp_order.go @@ -17,15 +17,39 @@ func (d *ExternalCorpOrder) TableName() string { return "cp_order" } -func (d *ExternalCorpOrder) QueryOwnerData(owner string, startTime, endTime int64, status int) ([]*model.ExternalCorpOrder, error) { +func (d *ExternalCorpOrder) QueryOwnerOrder(owner string, startTime, endTime int64) ([]*model.ExternalCorpOrder, error) { orderTable := d.TableName() tx := corpDB.Table(orderTable) var o []*model.ExternalCorpOrder - if status != 0 { - tx.Where(orderTable+".status = ?", status) - } + tx.Where(orderTable+".status = ?", 2) + + tx.Where("cp_user.username = ?", owner) + tx.Where(orderTable+".pay_time >= ?", startTime) + tx.Where(orderTable+".pay_time <= ?", endTime) + + tx.Joins(fmt.Sprintf("LEFT JOIN cp_user ON %s.admin_id=cp_user.id", orderTable)) + tx.Where("cp_user.username = ?", owner) + tx = tx.Find(&o) + if tx.Error == gorm.ErrRecordNotFound { + return o, nil + } + + if tx.Error != nil { + return nil, tx.Error + } + return o, nil +} + +func (d *ExternalCorpOrder) QueryProcessOrder(owner string, startTime, endTime int64) ([]*model.ExternalCorpOrder, error) { + orderTable := d.TableName() + tx := corpDB.Table(orderTable) + + var o []*model.ExternalCorpOrder + + tx.Where(orderTable+".process_status = ?", 2) + tx.Where("cp_user.username = ?", owner) tx.Where(orderTable+".pay_time >= ?", startTime) tx.Where(orderTable+".pay_time <= ?", endTime) diff --git a/service/salary_calculator/salary_calculator_1002.go b/service/salary_calculator/salary_calculator_1002.go index fe42474..8d1fbdd 100644 --- a/service/salary_calculator/salary_calculator_1002.go +++ b/service/salary_calculator/salary_calculator_1002.go @@ -35,13 +35,22 @@ func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) { monthTime, _ := time.ParseInLocation("200601", salary.Month, time.Local) startTime := monthTime.Unix() endTime := monthTime.AddDate(0, 1, 0).Unix() - 1 - orders, err := dao.NewExternalCorpOrder().QueryOwnerData(s.user.Username, startTime, endTime, 2) + orders, err := dao.NewExternalCorpOrder().QueryOwnerOrder(s.user.Username, startTime, endTime) if err != nil { log.Errorf("db error:%s", err.Error()) return } orderNum := len(orders) - salary.SetExtra("corp_order_num", cast.ToString(len(orders))) + salary.SetExtra("corp_order_num", cast.ToString(orderNum)) + + processOrders, err := dao.NewExternalCorpOrder().QueryProcessOrder(s.user.Username, startTime, endTime) + if err != nil { + log.Errorf("db error:%s", err.Error()) + return + } + + processOrderNum := len(processOrders) + salary.SetExtra("corp_process_order_num", cast.ToString(processOrderNum)) if orderNum >= 40 { salary.TargetSalary = cast.ToFloat64(userSlary.Target) @@ -55,4 +64,5 @@ func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) { } else { salary.TargetSalary = float64(60 * orderNum) } + salary.AwardSalary += float64(processOrderNum * 5) }