package api.controller; import api.bean.PoleLightBatchEntity; import api.bean.ReqParams; import api.bean.TimerRequest; import api.result.Msg; import api.service.AccessService; import api.utils.HttpUtil; import com.alibaba.fastjson.JSON; import com.google.common.util.concurrent.RateLimiter; import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * @author van * @version 1.0 * msg:单灯定时任务控制层 * @date 2021/11/2 15:04 */ @RestController @RequestMapping("/pole/timer") public class TimerController { @Autowired private AccessService accessService; RateLimiter rateLimiter = RateLimiter.create(10.0); /** * 定时任务列表 * */ @RequestMapping(value = "list",method = RequestMethod.POST) public Msg listWithNotStatus(@RequestBody ReqParams reqParams){ rateLimiter.acquire(1); if (reqParams.getLimit()>50){ return Msg.error("limit exception!!!"); } Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setLimit(reqParams.getLimit()); timerRequest.setPage(reqParams.getPage()); timerRequest.setIds(new ArrayList<>()); timerRequest.setKey(reqParams.getKey()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/list", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("list")); } else { return Msg.error(msg.get("msg").toString()); } } @RequestMapping(value = "info",method = RequestMethod.POST) public Msg timerInfo(@RequestBody ReqParams reqParams){ rateLimiter.acquire(1); Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setTimerId(reqParams.getTimerId()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/getStreetlightListByTimerId", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); System.out.println(result); if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("list")); } else { return Msg.error(msg.get("msg").toString()); } } /** * 查看定时任务ID对应绑定的灯杆列表 * */ @RequestMapping(value = "getSyncStatusByTimerId",method = RequestMethod.POST) public Msg getStreetlightListByTimerId(@RequestBody ReqParams reqParams){ System.out.println(reqParams); rateLimiter.acquire(1); Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setTimerId(reqParams.getTimerId()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/listByTimerId", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("list")); } else { return Msg.error(msg.get("msg").toString()); } } /** * 删除定时任务 * */ @RequestMapping(value = "deleteTimerByTimerId",method = RequestMethod.POST) public Msg deleteTimerByTimerId(@RequestBody ReqParams reqParams){ rateLimiter.acquire(1); Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setTimerId(reqParams.getTimerId()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/deleteTimerByTimerId", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); assert msg != null; if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("data")); } else { return Msg.error(msg.get("msg").toString()); } } /** * 添加定时任务 * */ @RequestMapping(value = "addTimer",method = RequestMethod.POST) public Msg addTimer(@RequestBody ReqParams reqParams){ rateLimiter.acquire(1); Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setIds(Arrays.asList(reqParams.getStreetlightIds())); timerRequest.setTimerExp(reqParams.getTimerExp()); timerRequest.setTimerName(reqParams.getTimerName()); timerRequest.setLightNumber(reqParams.getLightNumber()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/addTimer", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); assert msg != null; if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("data")); } else { return Msg.error(msg.get("msg").toString()); } } /** * 修改定时任务 * */ @RequestMapping(value = "updateTimer",method = RequestMethod.POST) public Msg updateTimer(@RequestBody ReqParams reqParams){ rateLimiter.acquire(1); Long userId = accessService.getUserId(reqParams.getAccessToken()); if(userId == null){ return Msg.error("accessToken exception!!!"); } reqParams.setApiKey(reqParams.getApiKey()); reqParams.setUserId(userId); TimerRequest timerRequest = new TimerRequest(); timerRequest.setTimerId(reqParams.getTimerId()); timerRequest.setIds(Arrays.asList(reqParams.getStreetlightIds())); timerRequest.setTimerExp(reqParams.getTimerExp()); timerRequest.setTimerName(reqParams.getTimerName()); timerRequest.setLightNumber(reqParams.getLightNumber()); reqParams.setTimerRequest(timerRequest); String result = HttpUtil.Post( "http://47.106.172.9:8888/machine-fast/serv/api/timer/updateTimer", new Gson().toJson(reqParams) ); Map msg = JSON.parseObject(result, HashMap.class); assert msg != null; if (msg.get("msg").equals("success")){ return Msg.ok().put("data",msg.get("data")); } else { return Msg.error(msg.get("msg").toString()); } } }