new salary3

This commit is contained in:
jiangyong27 2025-03-05 16:44:20 +08:00
parent d151cfcaba
commit 2ca063b072
9 changed files with 104 additions and 57 deletions

View File

@ -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
}

View File

@ -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
}

View File

@ -16,10 +16,10 @@ func (d *UnifyAdData) TableName() string {
return "unify_ad_data" 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()) tx := unifyDB.Table(d.TableName())
var o []*model.UnifyAdData var o []*model.ExternalUnifyAdData
tx = tx.Where("data_type = ?", "account_report") tx = tx.Where("data_type = ?", "account_report")
tx = tx.Where("owner = ?", owner) tx = tx.Where("owner = ?", owner)

View File

@ -16,10 +16,10 @@ func (d *UnifyKctData) TableName() string {
return "view_unify_kct_summary" 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()) tx := unifyDB.Table(d.TableName())
var o []*model.UnifyKctSummary var o []*model.ExternalUnifyKctSummary
if startDay != "" { if startDay != "" {
tx = tx.Where("day >= ?", startDay) tx = tx.Where("day >= ?", startDay)

View File

@ -1,8 +0,0 @@
package model
type CorpOrderData struct {
PayCount int64
PayAmount int64
RefundCount int64
RefundAmount int64
}

View File

@ -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
}

View File

@ -1,6 +1,6 @@
package model package model
type UnifyAdData struct { type ExternalUnifyAdData struct {
Id int64 `json:"id"` Id int64 `json:"id"`
AppId int64 `json:"appId"` AppId int64 `json:"appId"`
Day string `json:"day"` Day string `json:"day"`
@ -26,7 +26,7 @@ type UnifyAdData struct {
Raw string `json:"raw"` Raw string `json:"raw"`
} }
type UnifyKctSummary struct { type ExternalUnifyKctSummary struct {
Day string Day string
NewUser int64 NewUser int64
ActivityUser int64 ActivityUser int64

View File

@ -19,7 +19,7 @@ db = "unify"
threshold = 5000 threshold = 5000
[corp_mysql] [corp_mysql]
host = "10.0.2.157" host = "192.168.2.50"
port = 13307 port = 13307
user = "corp" user = "corp"
pass = "UvFwai9N_Nx2zgny" pass = "UvFwai9N_Nx2zgny"

View File

@ -1,9 +1,12 @@
package salary_calculator package salary_calculator
import ( import (
"enterprise/common/dao"
"enterprise/common/model" "enterprise/common/model"
"enterprise/common/registry" "enterprise/common/registry"
log "github.com/sirupsen/logrus"
"github.com/spf13/cast" "github.com/spf13/cast"
"time"
) )
type SalaryCalculator1002 struct { 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.AttendSalary = cast.ToFloat64(userSlary.Base) * (salary.AttendDay / float64(salary.ShouldDay))
salary.TargetSalary = cast.ToFloat64(userSlary.Target) 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)
}
} }