获取应用令牌服务.md 3.4 KB

获取应用令牌服务

1. 功能概述

该方法用于获取应用令牌。根据传入的请求数据,验证 appidappSecret,生成令牌,并返回相应的结果。

2. 类和方法定义

2.1 类定义

  • ServiceDto:封装了方法执行的结果和相关日志的类。
  • LogEntity:表示日志实体的类。
  • Applog:表示应用日志实体类

2.2 方法定义

public ServiceDto,LogEntity>getToken(Map requestData)throws JsonProcessingException,NoSuchAlgorithmException

2.3 参数说明

  • requestData (Map): 包含请求数据的map对象
  • 2.4 返回值

    • ServiceDto<Map<String, Object>, LogEntity>: 一个泛型为 <Map<String, Object>, LogEntity>ServiceDto 对象,包含结果数据以及日志信息。

    2.5 异常

    • JsonProcessingException: 在处理JSON数据时可能抛出的异常。
    • NoSuchAlgorithmException: 在加密时可能抛出的异常。

    3. 实现逻辑

    1. requestData 中获取 appidappSecretrequestIpsessionId 参数。

    2. 创建一个 ServiceDto<Map<String, Object>, LogEntity> 对象 serviceDto

    3. 调用 applicationconnectlogServiceremoveExpiresData() 方法,用于删除过期的数据。

    4. 调用 applicationServicefindByAppIdAndAppSecret 方法,通过 appidappSecret 查找对应的 Application 对象。

    5. 如果找到了有效的 application

      1. 调用 applicationconnectlogServicefindByAppidAndRequestIp 方法,通过 appidrequestIp 查找对应的 Appconnectlog 对象。
      2. 获取当前时间 now
      3. 如果未找到 applicationconnectlog,则创建一个新的 Appconnectlog 对象:
        1. 生成令牌 md5Token,通过 CommonUtil.toMD5 方法将当前时间 nowsessionId 拼接后进行 MD5 加密。
        2. 设置 Apptokenappidrequestip
      4. 获取 apptokeneffective 值,即令牌的有效期时长(单位为分钟)。
      5. 计算过期时间 expiresTime,为当前时间 now 加上有效期时长 apptokeneffective
      6. 更新 applicationconnectlog 的过期时间 expiretime、请求时间 requesttime 和最后时间 lasttime
      7. 调用 applicationconnectlogServicesaveOrUpdate 方法保存或更新 applicationconnectlog 对象。
      8. 创建一个 dataHashMap 对象,用于存储返回的数据:
      9. applicationconnectlogapptokenexpiretimeappnameappengnameapplogoappsmalllogobackgroundappcoderule 放入 data 中。
      10. data 设置为 serviceDto 的返回数据,并设置成功标志为 true
    6. 如果未找到有效的 application

      1. 设置 serviceDto 的成功标志为 false,并设置错误信息为 "appid或者appsecret错误"。
    7. 创建一个 Applog 对象 logData,并设置相应的属性值:

      1. 设置 appidappid
      2. 设置 apinameapplicationappname,如果 application 为空,则设置为 null
      3. 设置 requestiprequestIp
      4. 设置 sessionidsessionId
      5. 设置 inputdata 为将 requestData 转换为 JSON 字符串。
      6. 设置 outputdata 为将 serviceDto 的返回数据转换为 JSON 字符串。
    8. 设置 serviceDto 的日志数据为 logData

    9. 返回 serviceDto