74 lines
2.4 KiB
Erlang
74 lines
2.4 KiB
Erlang
%%%-------------------------------------------------------------------
|
|
%%% @author licheng5
|
|
%%% @copyright (C) 2020, <COMPANY>
|
|
%%% @doc
|
|
%%%
|
|
%%% @end
|
|
%%% Created : 26. 4月 2020 3:36 下午
|
|
%%%-------------------------------------------------------------------
|
|
-module(http_router_handler).
|
|
-author("licheng5").
|
|
-include("iot.hrl").
|
|
|
|
%% API
|
|
-export([handle_request/4]).
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
%% helper methods
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
handle_request(_, "/router/list", Params, PostParams) ->
|
|
Page0 = maps:get(<<"page">>, Params, <<"1">>),
|
|
Size0 = maps:get(<<"size">>, Params, <<"10">>),
|
|
Page = binary_to_integer(Page0),
|
|
Size = binary_to_integer(Size0),
|
|
|
|
true = Page > 0 andalso Size > 0,
|
|
Start = (Page - 1) * Size,
|
|
|
|
%% 处理查询条件
|
|
Name = maps:get(<<"name">>, PostParams, <<"">>),
|
|
|
|
MatchHead = #router{name = '$1', _ = '_'},
|
|
Guard = [],
|
|
Guard1 = case Name =/= <<"">> of
|
|
true ->
|
|
[{'=:=', '$1', Name}|Guard];
|
|
false ->
|
|
Guard
|
|
end,
|
|
|
|
Result = ['$_'],
|
|
|
|
case router_model:get_routers({MatchHead, Guard1, Result}, Start, Size) of
|
|
{ok, Routers, TotalNum} ->
|
|
Response = #{
|
|
<<"routers">> => lists:map(fun(R) -> router_model:to_map(R) end, Routers),
|
|
<<"total_num">> => TotalNum
|
|
},
|
|
|
|
{ok, 200, iot_util:json_data(Response)};
|
|
{error, Reason} ->
|
|
lager:warning("[host_handler] get a error: ~p", [Reason]),
|
|
{ok, 200, iot_util:json_error(404, <<"database error">>)}
|
|
end;
|
|
|
|
handle_request("GET", "/router/detail", #{<<"router_id">> := RouterId}, _) ->
|
|
case router_model:get_router(RouterId) of
|
|
undefined ->
|
|
{ok, 200, iot_util:json_error(404, <<"router not found">>)};
|
|
{ok, Router} ->
|
|
RouterInfo = router_model:to_map(Router),
|
|
|
|
{ok, 200, iot_util:json_data(RouterInfo)}
|
|
end;
|
|
|
|
handle_request("POST", "/router/changer_status", _, Params = #{<<"router_id">> := RouterId, <<"status">> := NStatus}) ->
|
|
lager:debug("[router_handler] post params is: ~p", [Params]),
|
|
|
|
case router_model:change_status(RouterId, NStatus) of
|
|
ok ->
|
|
{ok, 200, iot_util:json_data(<<"success">>)};
|
|
{error, _} ->
|
|
{ok, 200, iot_util:json_error(404, <<"error">>)}
|
|
end. |