package financewithdrawal import "hyapp-admin-server/internal/model" type withdrawalApplicationDTO struct { ID uint `json:"id"` AppCode string `json:"appCode"` AppName string `json:"appName"` UserID string `json:"userId"` SalaryAssetType string `json:"salaryAssetType"` WithdrawAmount string `json:"withdrawAmount"` WithdrawAmountMinor int64 `json:"withdrawAmountMinor"` PointGrossAmount int64 `json:"pointGrossAmount,omitempty"` PointFeeAmount int64 `json:"pointFeeAmount,omitempty"` PointNetAmount int64 `json:"pointNetAmount,omitempty"` PointsPerUSD int64 `json:"pointsPerUsd,omitempty"` PointFeeBPS int32 `json:"pointFeeBps,omitempty"` WithdrawMethod string `json:"withdrawMethod"` WithdrawAddress string `json:"withdrawAddress"` FreezeTransactionID string `json:"freezeTransactionId"` AuditTransactionID string `json:"auditTransactionId"` Status string `json:"status"` ApproverUserID *uint `json:"approverUserId"` ApproverName string `json:"approverName"` AuditRemark string `json:"auditRemark"` AuditImageURL string `json:"auditImageUrl"` ApprovedAtMS *int64 `json:"approvedAtMs"` CreatedAtMS int64 `json:"createdAtMs"` UpdatedAtMS int64 `json:"updatedAtMs"` } func withdrawalApplicationDTOFromModel(item model.UserWithdrawalApplication) withdrawalApplicationDTO { dto := withdrawalApplicationDTO{ ID: item.ID, AppCode: item.AppCode, AppName: item.AppCode, UserID: item.UserID, SalaryAssetType: item.SalaryAssetType, WithdrawAmount: item.WithdrawAmount, WithdrawAmountMinor: item.WithdrawAmountMinor, WithdrawMethod: item.WithdrawMethod, WithdrawAddress: item.WithdrawAddress, FreezeTransactionID: item.FreezeTransactionID, AuditTransactionID: item.AuditTransactionID, Status: item.Status, ApproverUserID: item.ApproverUserID, ApproverName: item.ApproverName, AuditRemark: item.AuditRemark, AuditImageURL: item.AuditImageURL, ApprovedAtMS: item.ApprovedAtMS, CreatedAtMS: item.CreatedAtMS, UpdatedAtMS: item.UpdatedAtMS, } if isPointWithdrawalAssetType(item.SalaryAssetType) { grossPoints := item.WithdrawAmountMinor feePoints := grossPoints * int64(pointWithdrawalDefaultFeeBPS) / 10000 dto.PointGrossAmount = grossPoints dto.PointFeeAmount = feePoints dto.PointNetAmount = grossPoints - feePoints dto.PointsPerUSD = pointWithdrawalDefaultPointsPerUSD dto.PointFeeBPS = pointWithdrawalDefaultFeeBPS } return dto } func withdrawalApplicationDTOsFromModel(items []model.UserWithdrawalApplication) []withdrawalApplicationDTO { out := make([]withdrawalApplicationDTO, 0, len(items)) for _, item := range items { out = append(out, withdrawalApplicationDTOFromModel(item)) } return out }