fix
This commit is contained in:
parent
7f1dbbade5
commit
905ddbcecd
@ -79,46 +79,39 @@ handle(<<"server.register">>, Msg = #{<<"c_id">> := ClientId, <<"r">> := PubKey,
|
||||
end;
|
||||
|
||||
handle(<<"server.data">>, #{<<"c_id">> := HostId, <<"d">> := Data}) ->
|
||||
{ok, Host = #host{aes = Aes}} = host_model:get_host(HostId),
|
||||
Services = microservice_model:get_services(HostId),
|
||||
|
||||
PlainData = iot_cipher_aes:decrypt(Aes, Aes, Data),
|
||||
case jiffy:decode(PlainData, [return_maps]) of
|
||||
Infos when is_list(Infos) ->
|
||||
lager:debug("the data is: ~p", [Infos]),
|
||||
|
||||
%% 一次可能提前多组数据
|
||||
lists:foreach(fun(#{<<"service_name">> := ServiceName, <<"data">> := Items}) ->
|
||||
case lists:search(fun(#service{name = Name}) -> Name =:= ServiceName end, Services) of
|
||||
{value, Service=#service{metrics = Metrics}} ->
|
||||
%% 更新数据
|
||||
NMetrics = lists:foldl(fun(MetricData, MetricsAcc) -> append_metric(MetricsAcc, MetricData) end, Metrics, Items),
|
||||
|
||||
|
||||
|
||||
|
||||
ok;
|
||||
false ->
|
||||
lager:warning("[iot_message_handler] host_id: ~p, not found service_name: ~p", [HostId, ServiceName])
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
end, Infos),
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ok;
|
||||
_ ->
|
||||
lager:debug("the metric is invalid json")
|
||||
end,
|
||||
|
||||
|
||||
ok.
|
||||
case host_model:get_host(HostId) of
|
||||
{ok, #host{aes = Aes}} ->
|
||||
Services = microservice_model:get_services(HostId),
|
||||
PlainData = iot_cipher_aes:decrypt(Aes, Aes, Data),
|
||||
case jiffy:decode(PlainData, [return_maps]) of
|
||||
Infos when is_list(Infos) ->
|
||||
lager:debug("[iot_message_handler] the data is: ~p", [Infos]),
|
||||
%% 一次可能提前多组数据
|
||||
lists:foreach(fun(#{<<"service_name">> := ServiceName, <<"data">> := Items}) ->
|
||||
case lists:search(fun(#service{name = Name}) -> Name =:= ServiceName end, Services) of
|
||||
{value, #service{service_id = ServiceId, metrics = Metrics}} ->
|
||||
%% 更新数据
|
||||
NMetrics = lists:foldl(fun(MetricData, MetricsAcc) -> append_metric(MetricsAcc, MetricData) end, Metrics, Items),
|
||||
case service_model:update_metric(ServiceId, NMetrics) of
|
||||
ok ->
|
||||
lager:debug("[iot_message_handler] update metrics success");
|
||||
{ok, Reason} ->
|
||||
lager:debug("[iot_message_handler] update metrics error: ~p", [Reason])
|
||||
end;
|
||||
false ->
|
||||
lager:warning("[iot_message_handler] host_id: ~p, not found service_name: ~p", [HostId, ServiceName])
|
||||
end
|
||||
end, Infos);
|
||||
_ ->
|
||||
lager:debug("[iot_message_handler] the metric is invalid json")
|
||||
end;
|
||||
undefined ->
|
||||
lager:warning("[iot_message_handler] host_id: ~p, not exists", [HostId])
|
||||
end.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% helper methods
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
append_metric(Metrics, MetricData) when is_map(MetricData) ->
|
||||
Name = maps:get(<<"name">>, MetricData, <<"">>),
|
||||
|
||||
@ -67,10 +67,11 @@ json_error(ErrCode, ErrMessage) when is_integer(ErrCode), is_binary(ErrMessage)
|
||||
uuid() ->
|
||||
rand_bytes(16).
|
||||
|
||||
rand_bytes(Size) when is_integer(Size) ->
|
||||
Bytes = crypto:strong_rand_bytes(Size),
|
||||
rand_bytes(Size) when is_integer(Size), Size > 0 ->
|
||||
Size1 = erlang:ceil(Size / 2),
|
||||
Bytes = crypto:strong_rand_bytes(Size1),
|
||||
S = lists:flatten([integer_to_list(E, 16) || <<E:4>> <= Bytes]),
|
||||
string:to_lower(S).
|
||||
lists:sublist(string:to_lower(S), 1, Size).
|
||||
|
||||
queue_limited_in(Item, Q, Num) when is_integer(Num) ->
|
||||
case queue:len(Q) >= Num of
|
||||
|
||||
@ -24,7 +24,7 @@ get_host(HostId) when is_binary(HostId) ->
|
||||
|
||||
%% 获取app信息
|
||||
-spec get_hosts(Start :: integer(), Limit :: integer()) ->
|
||||
{ok, Items :: list(), Stat :: maps()} |
|
||||
{ok, Items :: list(), Stat :: maps:map()} |
|
||||
{error, Reason :: any()}.
|
||||
get_hosts(Start, Limit) when is_integer(Limit), is_integer(Start), Start >= 0, Limit > 0 ->
|
||||
Fun = fun() ->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user