该方法用于获取应用令牌。根据传入的请求数据,验证 appid
和 appSecret
,生成令牌,并返回相应的结果。
ServiceDto
:封装了方法执行的结果和相关日志的类。LogEntity
:表示日志实体的类。Applog
:表示应用日志实体类public ServiceDto,LogEntity>getToken(Map requestData)throws JsonProcessingException,NoSuchAlgorithmException
requestData
(Map): 包含请求数据的map对象
ServiceDto<Map<String, Object>, LogEntity>
: 一个泛型为 <Map<String, Object>, LogEntity>
的 ServiceDto
对象,包含结果数据以及日志信息。JsonProcessingException
: 在处理JSON数据时可能抛出的异常。NoSuchAlgorithmException
: 在加密时可能抛出的异常。从 requestData
中获取 appid
、appSecret
、requestIp
和 sessionId
参数。
创建一个 ServiceDto<Map<String, Object>, LogEntity>
对象 serviceDto
。
调用 applicationconnectlogService
的 removeExpiresData()
方法,用于删除过期的数据。
调用 applicationService
的 findByAppIdAndAppSecret
方法,通过 appid
和 appSecret
查找对应的 Application
对象。
如果找到了有效的 application
:
applicationconnectlogService
的 findByAppidAndRequestIp
方法,通过 appid
和 requestIp
查找对应的 Appconnectlog
对象。now
。applicationconnectlog
,则创建一个新的 Appconnectlog
对象:
md5Token
,通过 CommonUtil.toMD5
方法将当前时间 now
和 sessionId
拼接后进行 MD5 加密。Apptoken
、appid
和 requestip
。apptokeneffective
值,即令牌的有效期时长(单位为分钟)。expiresTime
,为当前时间 now
加上有效期时长 apptokeneffective
。applicationconnectlog
的过期时间 expiretime
、请求时间 requesttime
和最后时间 lasttime
。applicationconnectlogService
的 saveOrUpdate
方法保存或更新 applicationconnectlog
对象。data
的 HashMap
对象,用于存储返回的数据:applicationconnectlog
的 apptoken
、expiretime
、appname
、appengname
、applogo
、appsmalllogo
、background
和 appcoderule
放入 data
中。data
设置为 serviceDto
的返回数据,并设置成功标志为 true
。如果未找到有效的 application
:
serviceDto
的成功标志为 false
,并设置错误信息为 "appid或者appsecret错误"。创建一个 Applog
对象 logData
,并设置相应的属性值:
appid
为 appid
。apiname
为 application
的 appname
,如果 application
为空,则设置为 null
。requestip
为 requestIp
。sessionid
为 sessionId
。inputdata
为将 requestData
转换为 JSON 字符串。outputdata
为将 serviceDto
的返回数据转换为 JSON 字符串。设置 serviceDto
的日志数据为 logData
。
返回 serviceDto
。