75 lines
2.8 KiB
Go
75 lines
2.8 KiB
Go
package teamsalarypolicy
|
|
|
|
import "hyapp-admin-server/internal/model"
|
|
|
|
type policyDTO struct {
|
|
ID uint `json:"id"`
|
|
AppCode string `json:"app_code"`
|
|
PolicyType string `json:"policy_type"`
|
|
Name string `json:"name"`
|
|
RegionID int64 `json:"region_id"`
|
|
Status string `json:"status"`
|
|
SettlementTriggerMode string `json:"settlement_trigger_mode"`
|
|
EffectiveFromMS int64 `json:"effective_from_ms"`
|
|
EffectiveToMS int64 `json:"effective_to_ms"`
|
|
Description string `json:"description"`
|
|
CreatedByAdminID uint `json:"created_by_admin_id"`
|
|
UpdatedByAdminID uint `json:"updated_by_admin_id"`
|
|
CreatedAtMS int64 `json:"created_at_ms"`
|
|
UpdatedAtMS int64 `json:"updated_at_ms"`
|
|
Levels []levelDTO `json:"levels"`
|
|
}
|
|
|
|
type levelDTO struct {
|
|
ID uint `json:"id"`
|
|
PolicyID uint `json:"policy_id"`
|
|
Level int32 `json:"level"`
|
|
ThresholdUSD string `json:"threshold_usd"`
|
|
RatePercent string `json:"rate_percent"`
|
|
SalaryUSD string `json:"salary_usd"`
|
|
Status string `json:"status"`
|
|
SortOrder int32 `json:"sort_order"`
|
|
CreatedAtMS int64 `json:"created_at_ms"`
|
|
UpdatedAtMS int64 `json:"updated_at_ms"`
|
|
}
|
|
|
|
func policyFromModel(item model.TeamSalaryPolicy) policyDTO {
|
|
levels := make([]levelDTO, 0, len(item.Levels))
|
|
for _, level := range item.Levels {
|
|
levels = append(levels, levelFromModel(level))
|
|
}
|
|
// 响应层去掉 decimal 尾零,前端输入框仍以字符串处理金额和百分比,避免 JS 浮点误差。
|
|
return policyDTO{
|
|
ID: item.ID,
|
|
AppCode: item.AppCode,
|
|
PolicyType: item.PolicyType,
|
|
Name: item.Name,
|
|
RegionID: item.RegionID,
|
|
Status: item.Status,
|
|
SettlementTriggerMode: firstNonBlank(item.SettlementTriggerMode, settlementTriggerAutomatic),
|
|
EffectiveFromMS: item.EffectiveFromMS,
|
|
EffectiveToMS: item.EffectiveToMS,
|
|
Description: item.Description,
|
|
CreatedByAdminID: item.CreatedByAdminID,
|
|
UpdatedByAdminID: item.UpdatedByAdminID,
|
|
CreatedAtMS: item.CreatedAtMS,
|
|
UpdatedAtMS: item.UpdatedAtMS,
|
|
Levels: levels,
|
|
}
|
|
}
|
|
|
|
func levelFromModel(item model.TeamSalaryLevel) levelDTO {
|
|
return levelDTO{
|
|
ID: item.ID,
|
|
PolicyID: item.PolicyID,
|
|
Level: item.LevelNo,
|
|
ThresholdUSD: trimDecimalZeros(item.ThresholdUSD),
|
|
RatePercent: trimDecimalZeros(item.RatePercent),
|
|
SalaryUSD: trimDecimalZeros(item.SalaryUSD),
|
|
Status: item.Status,
|
|
SortOrder: item.SortOrder,
|
|
CreatedAtMS: item.CreatedAtMS,
|
|
UpdatedAtMS: item.UpdatedAtMS,
|
|
}
|
|
}
|