toolsLogic.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package logic
  2. import (
  3. "git.rtzhtech.cn/iss/public-lib/dto"
  4. "git.rtzhtech.cn/iss/public-lib/utils"
  5. "time"
  6. )
  7. var (
  8. sn int64 // 序列号占 12 位,十进制范围是 [ 0, 4095 ]
  9. lastTimeStamp int64 // 上次的时间戳(毫秒级), 1秒=1000毫秒, 1毫秒=1000微秒,1微秒=1000纳秒
  10. )
  11. func init() {
  12. lastTimeStamp = time.Now().UnixNano() / 1000000
  13. }
  14. type ToolsLogic struct {
  15. }
  16. // GetOnlyId
  17. // @函数名:GetOnlyId
  18. // @函数功能描述: 获取唯一id
  19. // @对象名:c
  20. // @参数定义:appId
  21. // @返回值:int64
  22. //
  23. func (c *ToolsLogic) GetOnlyId(appId int64) int64 {
  24. if appId == 0 {
  25. return 0
  26. }
  27. nowTime := time.Now().UnixNano() / 1000000
  28. appId = appId & 0x3FF
  29. sfOne := nowTime << 22
  30. sfTwo := appId << 12
  31. //每次累加,减小时间回滚发生重复的概率
  32. sn++
  33. sfThree := sn & 0xFFF
  34. return sfOne | sfTwo | sfThree
  35. }
  36. // ParseOnlyId
  37. // @函数名:ParseOnlyId
  38. // @函数功能描述: 通过唯一id获取appId
  39. // @对象名:c
  40. // @参数定义:mid
  41. // @返回值:appId
  42. //
  43. func (c *ToolsLogic) ParseOnlyId(mid int64) (appId int64) {
  44. if mid == 0 {
  45. return 0
  46. }
  47. appId = mid & 0x3FF000
  48. return appId >> 12
  49. }
  50. // ParseToken
  51. // @函数名:ParseToken
  52. // @函数功能描述: 传入token和公钥文件路径
  53. // @对象名:c
  54. // @参数定义:token
  55. // @参数定义:path
  56. //
  57. func (c *ToolsLogic) ParseToken(token, path string) (*dto.Claims, error) {
  58. var (
  59. resp = new(dto.Claims)
  60. )
  61. err := utils.RSADeToken(token, path, resp)
  62. if err != nil {
  63. return resp, err
  64. }
  65. return resp, nil
  66. }
  67. func (c *ToolsLogic) EncryptMsg(message []byte, key []byte, isDebug ...bool) (string, error) {
  68. return utils.EncryptByAes(message, key, isDebug...)
  69. }
  70. func (c *ToolsLogic) DecryptMsg(message string, key []byte, isDebug ...bool) ([]byte, error) {
  71. return utils.DecryptByAes(message, key, isDebug...)
  72. }