package com.doumee.cloud.openapi; import com.alibaba.fastjson.JSONObject; 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.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DESUtil; import com.doumee.core.wms.model.response.WmsBaseResponse; import com.doumee.dao.openapi.request.*; import com.doumee.dao.openapi.response.*; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.*; import com.doumee.service.system.SystemUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; 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.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.util.*; /** * @author 江蹄蹄 * @date 2023/11/30 15:33 */ @Api(tags = "提供安防平台对接接口(数据大屏基础数据等)") @RestController @Slf4j @RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/hk/api") public class HkOpenApiController extends BaseController { @Autowired private PlatformService platformService; @Autowired private InterfaceLogService interfaceLogService; @Autowired private PlatformLogService platformLogService; @Autowired private PlatformJobService platformJobService; @Autowired private PlatformWarnEventService platformWarnEventService; @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) { log.info("【安防平台单点登录token解析】================="+token); int success = Constants.ZERO; Map result = new HashMap<>() ; try { HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest(); hkBaseTokenRequest.setToken(token); result = this.decodeTokenForHk(hkBaseTokenRequest); }catch (BusinessException e){ log.error("【安防平台】单点登录token解===失败:"+e.getMessage()); success = Constants.ONE; }catch (Exception e){ log.error("【安防平台】单点登录token解析===失败:"+e.getMessage()); e.printStackTrace(); success = Constants.ONE; }finally { interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "【安防平台】单点登录token解析",token, success, JSONObject.toJSONString(result),Constants.ZERO); } return result; } 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( redisToken);; 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("【用水量】近12个月用水量信息列表") @PostMapping("/water/lastMonthsDataList") public ApiResponse> lastMonthsWaterList() { return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ZERO)); } @LoginNoRequired @PreventRepeat @ApiOperation("【用气量】本月、上月和去年同月") @PostMapping("/gas/dataByMonth") public ApiResponse gasDataByMonth(@RequestBody GasByMonthRequest param) { return ApiResponse.success(platformWaterGasService.gasDataByMonth(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【用气量】近12个月用气量信息列表") @PostMapping("/gas/lastMonthsDataList") public ApiResponse> lastMonthsGasList () { return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ONE)); } @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> workingDataList(@RequestBody PlatformDataListRequest param) { return ApiResponse.success(platformJobService.platformWorkingDataList(param)); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】月台作业详情信息") @PostMapping("/platform/workDataInfo") public ApiResponse workDataInfo(@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(platformWarnEventService.findListToHk()); } @LoginNoRequired @PreventRepeat @ApiOperation("【月台】月台状态") @PostMapping("/platform/getStatusList") public ApiResponse> getStatusList() { return ApiResponse.success(platformService.getPlatformStatusList()); } }