applicationutil.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package application
  2. import (
  3. "math/big"
  4. "strings"
  5. "udeServer/internal/apierr"
  6. "github.com/google/uuid"
  7. "github.com/mattheath/base62"
  8. "github.com/segmentio/ksuid"
  9. )
  10. // 应用凭证签名算法,与 audit 包保持同一算法字面量(sdf 同源)。
  11. const HmacAlgo = "HmacSM3"
  12. // operatorName 无用户体系时的操作人占位,与日志归档/恢复一致。
  13. const operatorName = "admin"
  14. // GenerateApiKey 生成对外公钥(KSUID,27 位可排序 ID)。
  15. func GenerateApiKey() string {
  16. return ksuid.New().String()
  17. }
  18. // GenerateApiSecret 生成原始密钥(uuid 16 字节转 base62,22 字符)。
  19. func GenerateApiSecret() string {
  20. u := uuid.New()
  21. bi := new(big.Int).SetBytes(u[:])
  22. return base62.EncodeBigInt(bi)
  23. }
  24. // maskSensitive 掩码展示:前 4 后 4 明文,中间打星;长度不大于 8 时原样返回。
  25. func maskSensitive(value string) string {
  26. if len(value) <= 8 {
  27. return value
  28. }
  29. return value[:4] + strings.Repeat("*", len(value)-8) + value[len(value)-4:]
  30. }
  31. // normalizePage 页码/页大小兜底:1/10 起,上限 100。
  32. func normalizePage(page, pageSize int64) (int64, int64) {
  33. if page < 1 {
  34. page = 1
  35. }
  36. if pageSize < 10 {
  37. pageSize = 10
  38. }
  39. if pageSize > 100 {
  40. pageSize = 100
  41. }
  42. return page, pageSize
  43. }
  44. // checkId 主键合法性,与 logic 包同名 helper 行为一致。
  45. func checkId(id int64) error {
  46. if id <= 0 {
  47. return apierr.BadRequest("id must be greater than 0")
  48. }
  49. return nil
  50. }