From 2ca063b072c901fdbd00c3777eea0405754c1e8f Mon Sep 17 00:00:00 2001 From: jiangyong27 Date: Wed, 5 Mar 2025 16:44:20 +0800 Subject: [PATCH] new salary3 --- common/dao/corp_order_data.go | 42 ------------------ common/dao/external_corp_order.go | 44 +++++++++++++++++++ ...y_ad_data.go => external_unify_ad_data.go} | 4 +- ...mmary.go => external_unify_kct_summary.go} | 4 +- common/model/corp_data.go | 8 ---- common/model/external_corp_order.go | 26 +++++++++++ .../{unify_data.go => external_unify_data.go} | 4 +- conf/server.conf.dev | 2 +- .../salary_calculator_1002.go | 27 ++++++++++++ 9 files changed, 104 insertions(+), 57 deletions(-) delete mode 100644 common/dao/corp_order_data.go create mode 100644 common/dao/external_corp_order.go rename common/dao/{unify_ad_data.go => external_unify_ad_data.go} (89%) rename common/dao/{unify_kct_summary.go => external_unify_kct_summary.go} (89%) delete mode 100644 common/model/corp_data.go create mode 100644 common/model/external_corp_order.go rename common/model/{unify_data.go => external_unify_data.go} (93%) diff --git a/common/dao/corp_order_data.go b/common/dao/corp_order_data.go deleted file mode 100644 index 990c3ad..0000000 --- a/common/dao/corp_order_data.go +++ /dev/null @@ -1,42 +0,0 @@ -package dao - -import ( - "enterprise/common/model" - "gorm.io/gorm" -) - -type CorpOrderData struct { -} - -func NewCorpOrderData() *CorpOrderData { - return &CorpOrderData{} -} - -func (d *CorpOrderData) TableName() string { - return "cp_order" -} - -func (d *CorpOrderData) QueryOwnerData(owner, startDay, endDay string) (*model.CorpOrderData, error) { - tx := corpDB.Table(d.TableName()) - - var o model.CorpOrderData - - tx = tx.Where("data_type = ?", "account_report") - tx = tx.Where("owner = ?", owner) - if startDay != "" { - tx = tx.Where("day >= ?", startDay) - } - if endDay != "" { - tx = tx.Where("day <= ?", endDay) - } - - tx = tx.First(&o) - if tx.Error == gorm.ErrRecordNotFound { - return &o, nil - } - - if tx.Error != nil { - return nil, tx.Error - } - return &o, nil -} diff --git a/common/dao/external_corp_order.go b/common/dao/external_corp_order.go new file mode 100644 index 0000000..550a468 --- /dev/null +++ b/common/dao/external_corp_order.go @@ -0,0 +1,44 @@ +package dao + +import ( + "enterprise/common/model" + "fmt" + "gorm.io/gorm" +) + +type ExternalCorpOrder struct { +} + +func NewExternalCorpOrder() *ExternalCorpOrder { + return &ExternalCorpOrder{} +} + +func (d *ExternalCorpOrder) TableName() string { + return "cp_order" +} + +func (d *ExternalCorpOrder) QueryOwnerData(owner string, startTime, endTime int64, status int) ([]*model.ExternalCorpOrder, error) { + orderTable := d.TableName() + tx := corpDB.Table(orderTable) + + var o []*model.ExternalCorpOrder + + if status != 0 { + tx.Where(orderTable+".status = ?", status) + } + 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 +} diff --git a/common/dao/unify_ad_data.go b/common/dao/external_unify_ad_data.go similarity index 89% rename from common/dao/unify_ad_data.go rename to common/dao/external_unify_ad_data.go index 98d07a1..13b54b3 100644 --- a/common/dao/unify_ad_data.go +++ b/common/dao/external_unify_ad_data.go @@ -16,10 +16,10 @@ func (d *UnifyAdData) TableName() string { return "unify_ad_data" } -func (d *UnifyAdData) QueryOwnerData(owner, startDay, endDay string) ([]*model.UnifyAdData, error) { +func (d *UnifyAdData) QueryOwnerData(owner, startDay, endDay string) ([]*model.ExternalUnifyAdData, error) { tx := unifyDB.Table(d.TableName()) - var o []*model.UnifyAdData + var o []*model.ExternalUnifyAdData tx = tx.Where("data_type = ?", "account_report") tx = tx.Where("owner = ?", owner) diff --git a/common/dao/unify_kct_summary.go b/common/dao/external_unify_kct_summary.go similarity index 89% rename from common/dao/unify_kct_summary.go rename to common/dao/external_unify_kct_summary.go index 9d544b1..fb38ae5 100644 --- a/common/dao/unify_kct_summary.go +++ b/common/dao/external_unify_kct_summary.go @@ -16,10 +16,10 @@ func (d *UnifyKctData) TableName() string { return "view_unify_kct_summary" } -func (d *UnifyKctData) QueryData(startDay, endDay string) ([]*model.UnifyKctSummary, error) { +func (d *UnifyKctData) QueryData(startDay, endDay string) ([]*model.ExternalUnifyKctSummary, error) { tx := unifyDB.Table(d.TableName()) - var o []*model.UnifyKctSummary + var o []*model.ExternalUnifyKctSummary if startDay != "" { tx = tx.Where("day >= ?", startDay) diff --git a/common/model/corp_data.go b/common/model/corp_data.go deleted file mode 100644 index ff7bd4a..0000000 --- a/common/model/corp_data.go +++ /dev/null @@ -1,8 +0,0 @@ -package model - -type CorpOrderData struct { - PayCount int64 - PayAmount int64 - RefundCount int64 - RefundAmount int64 -} diff --git a/common/model/external_corp_order.go b/common/model/external_corp_order.go new file mode 100644 index 0000000..8704aab --- /dev/null +++ b/common/model/external_corp_order.go @@ -0,0 +1,26 @@ +package model + +type ExternalCorpOrder struct { + Id int64 + AdminId int64 + AdminName string + UserId int64 + CorpId int64 + GoodsId int64 + GoodsName string + GoodsType string + OutTradeNo string + TotalFee int64 + PaySource string + PayType string + PayTime int64 + RefundTime int64 + RefundFee int64 + RefundReason string + Status uint8 + ProcessStatus uint8 + ProcessId int64 + Hidden bool + Extra string + CreateTime int64 +} diff --git a/common/model/unify_data.go b/common/model/external_unify_data.go similarity index 93% rename from common/model/unify_data.go rename to common/model/external_unify_data.go index 80d4642..f6f0723 100644 --- a/common/model/unify_data.go +++ b/common/model/external_unify_data.go @@ -1,6 +1,6 @@ package model -type UnifyAdData struct { +type ExternalUnifyAdData struct { Id int64 `json:"id"` AppId int64 `json:"appId"` Day string `json:"day"` @@ -26,7 +26,7 @@ type UnifyAdData struct { Raw string `json:"raw"` } -type UnifyKctSummary struct { +type ExternalUnifyKctSummary struct { Day string NewUser int64 ActivityUser int64 diff --git a/conf/server.conf.dev b/conf/server.conf.dev index 7ba87cd..4f21daf 100644 --- a/conf/server.conf.dev +++ b/conf/server.conf.dev @@ -19,7 +19,7 @@ db = "unify" threshold = 5000 [corp_mysql] -host = "10.0.2.157" +host = "192.168.2.50" port = 13307 user = "corp" pass = "UvFwai9N_Nx2zgny" diff --git a/service/salary_calculator/salary_calculator_1002.go b/service/salary_calculator/salary_calculator_1002.go index 644805f..fe42474 100644 --- a/service/salary_calculator/salary_calculator_1002.go +++ b/service/salary_calculator/salary_calculator_1002.go @@ -1,9 +1,12 @@ package salary_calculator import ( + "enterprise/common/dao" "enterprise/common/model" "enterprise/common/registry" + log "github.com/sirupsen/logrus" "github.com/spf13/cast" + "time" ) type SalaryCalculator1002 struct { @@ -28,4 +31,28 @@ func (s *SalaryCalculator1002) Calculate(salary *model.StaffSalary) { salary.AttendSalary = cast.ToFloat64(userSlary.Base) * (salary.AttendDay / float64(salary.ShouldDay)) salary.TargetSalary = cast.ToFloat64(userSlary.Target) + + 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) + if err != nil { + log.Errorf("db error:%s", err.Error()) + return + } + orderNum := len(orders) + salary.SetExtra("corp_order_num", cast.ToString(len(orders))) + + if orderNum >= 40 { + salary.TargetSalary = cast.ToFloat64(userSlary.Target) + if orderNum <= 60 { + salary.AwardSalary = float64((orderNum - 40) * 80) + } else if orderNum <= 80 { + salary.AwardSalary = 1600 + float64((orderNum-60)*100) + } else { + salary.AwardSalary = 3600 + float64((orderNum-80)*120) + } + } else { + salary.TargetSalary = float64(60 * orderNum) + } }