package com.doumee.cloud.openapi; import com.doumee.api.BaseController; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.config.annotation.LoginNoRequired; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.model.ApiResponse; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DESUtil; import com.doumee.dao.openapi.request.*; import com.doumee.dao.openapi.response.*; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.PlatformJobService; import com.doumee.service.business.PlatformLogService; import com.doumee.service.business.PlatformService; import com.doumee.service.business.PlatformWaterGasService; import com.doumee.service.system.SystemUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import java.net.URLDecoder; import java.util.*; /** * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Api(tags = "提供安防平台对接接口(数据大屏基础数据等)") @RestController @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/hk/api") public class HkOpenApiController extends BaseController { @Autowired private PlatformService platformService; @Autowired private PlatformLogService platformLogService; @Autowired private PlatformJobService platformJobService; @Autowired private PlatformWaterGasService platformWaterGasService; @Autowired private SystemUserService systemUserService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private RedisTemplate redisTemplate; @LoginNoRequired @ApiOperation("token解析") @GetMapping("/water/decodeToken") public Map decodeToken(@RequestParam String token) { try { token = URLDecoder.decode(token,"UTF-8"); }catch (Exception e){ } HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest(); hkBaseTokenRequest.setToken(token); return this.decodeTokenForHk(hkBaseTokenRequest); } public Map decodeTokenForHk(HkBaseTokenRequest hkBaseTokenRequest){ Map result = new HashMap<>(); result.put("code","0"); result.put("msg","success"); if(Objects.isNull(hkBaseTokenRequest)||StringUtils.isBlank(hkBaseTokenRequest.getToken())){ result.put("code","-1"); result.put("msg","token参数为空"); return result; } String redisToken = (String) redisTemplate.opsForValue().get(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken()); if(StringUtils.isBlank(redisToken)){ result.put("code","-1"); result.put("msg","token无效!"); return result; } String userName = DESUtil.verifyHkToken(hkBaseTokenRequest.getToken()); if(StringUtils.isBlank(userName)){ result.put("code","-1"); result.put("msg","token参数为空"); return result; } //查询用户信息是否存在 SystemUser systemUser = new SystemUser(); systemUser.setUsername(userName); systemUser.setDeleted(Boolean.FALSE); SystemUser queryBean = systemUserService.findOne(systemUser); if(Objects.isNull(queryBean)){ result.put("code","-1"); result.put("msg","token参数为空"); return result; } if(Constants.equalsInteger(queryBean.getStatus(),Constants.ONE)){ result.put("code","-2"); result.put("msg","用户已禁用"); return result; } redisTemplate.delete(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken()); Map data = new HashMap<>(); data.put("userId",userName); result.put("data",data); return result; } @LoginNoRequired @PreventRepeat @ApiOperation("【用水量】本月、上月和去年同月") @PostMapping("/water/dataByMonth") public ApiResponse waterDataByMonth(@RequestBody WaterByMonthRequest param) { return ApiResponse.success(platformWaterGasService.waterDataByMonth(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【用气量】本月、上月和去年同月") @PostMapping("/gas/dataByMonth") public ApiResponse gasDataByMonth(@RequestBody GasByMonthRequest param) { return ApiResponse.success(platformWaterGasService.gasDataByMonth(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】按天统计运单请求参数") @PostMapping("/platform/orderNumByDate") public ApiResponse orderNumByDate(@RequestBody PlatformOrderNumByDateRequest param) { return ApiResponse.success(platformJobService.orderNumByDate(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】月台状态数量统计") @PostMapping("/platform/totalNumByStatus") public ApiResponse totalNumByStatus(@RequestBody PlatformNumByStatusRequest param) { return ApiResponse.success(platformService.getPlatformNumByStatusResponse()); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】月台当前作业信息列表") @PostMapping("/platform/workingDataList") public ApiResponse> platformWorkingDataList(@RequestBody PlatformDataListRequest param) { return ApiResponse.success(platformJobService.platformWorkingDataList(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】月台作业详情信息") @PostMapping("/platform/workDataInfo") public ApiResponse platformWorkingDataList(@RequestBody PlatformDataInfoRequest param) { return ApiResponse.success(platformJobService.platformWorkingDataList(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】当前车辆状态数量统计") @PostMapping("/platform/carStatusNum") public ApiResponse carStatusNum(@RequestBody CarNumByStatusRequest param) { return ApiResponse.success(platformJobService.carStatusNum(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】车辆事件列表数据集合(最新N条)") @PostMapping("/platform/carLogsList") public ApiResponse> carLogsList(@RequestBody CarLogsListRequest param) { return ApiResponse.success(platformLogService.getCarLogsListResponse(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】排队队列列表集合") @PostMapping("/platform/queueList") public ApiResponse queueList(@RequestBody PlatformQueuingListRequest param) { return ApiResponse.success(platformJobService.queueList(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】预警事件集合列表") @PostMapping("/platform/warningEventList") public ApiResponse> warningEventList(@RequestBody PlatformWarnEventListRequest param) { return ApiResponse.success(new ArrayList<>()); } }