|
@@ -0,0 +1,269 @@
|
|
|
+package com.ozs.web.controller.sdk;
|
|
|
+
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.ozs.common.utils.ApiTokenUtils;
|
|
|
+import com.ozs.common.utils.HttpClientUtil;
|
|
|
+import com.ozs.common.utils.StringUtils;
|
|
|
+import com.ozs.common.utils.stateSecrets.SM4Utils;
|
|
|
+import com.ozs.entity.BaseCameraManagement;
|
|
|
+import com.ozs.entity.BaseDeviceDynamicManagement;
|
|
|
+import com.ozs.entity.BaseUser;
|
|
|
+import com.ozs.entity.MsgAlarm;
|
|
|
+import com.ozs.entity.MsgAlarmExt;
|
|
|
+import com.ozs.entity.MsgAlarmFrequency;
|
|
|
+import com.ozs.entity.SvcAddress;
|
|
|
+import com.ozs.entity.vo.Files;
|
|
|
+import com.ozs.entity.vo.ReqMsgAlarmVo;
|
|
|
+import com.ozs.entity.vo.RespGeoHazardMonitorVo;
|
|
|
+import com.ozs.entity.vo.RespMsgAlarmVo;
|
|
|
+import com.ozs.service.BaseCameraManagementService;
|
|
|
+import com.ozs.service.BaseDeviceDynamicManagementService;
|
|
|
+import com.ozs.service.BaseUserService;
|
|
|
+import com.ozs.service.MsgAlarmExtService;
|
|
|
+import com.ozs.service.MsgAlarmFrequencyService;
|
|
|
+import com.ozs.service.MsgAlarmService;
|
|
|
+import com.ozs.service.SvcAddressService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 1. 获取身份认证控制层
|
|
|
+ *
|
|
|
+ * @author Administrator
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@Slf4j
|
|
|
+public class GeoHazardMonitorTokenController {
|
|
|
+ public static final String PATTERN = "^([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$";
|
|
|
+ @Resource
|
|
|
+ private ApiTokenUtils apiTokenUtils;
|
|
|
+ @Resource
|
|
|
+ BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
|
|
|
+ @Autowired
|
|
|
+ MsgAlarmService msgAlarmService;
|
|
|
+ @Autowired
|
|
|
+ MsgAlarmFrequencyService msgAlarmFrequencyService;
|
|
|
+ @Autowired
|
|
|
+ SvcAddressService svcAddressService;
|
|
|
+ @Autowired
|
|
|
+ BaseCameraManagementService baseCameraManagementService;
|
|
|
+ // @Value("${sdk.publish}")
|
|
|
+// private String sdkUrl;
|
|
|
+ @Autowired
|
|
|
+ private BaseUserService baseUserService;
|
|
|
+ @Autowired
|
|
|
+ private MsgAlarmExtService msgAlarmExtService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取web访问令牌
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/api/token")
|
|
|
+ public String getWebToken(@RequestBody SvcAddress svcAddress) {
|
|
|
+ // 生成令牌
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ LambdaQueryWrapper<SvcAddress> lw = new LambdaQueryWrapper<SvcAddress>();
|
|
|
+ if (!ObjectUtils.isEmpty(svcAddress.getClientId())) {
|
|
|
+ lw.eq(SvcAddress::getClientId, svcAddress.getClientId());
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "客户端编号不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ SvcAddress serviceOne = svcAddressService.getOne(lw);
|
|
|
+ if (!ObjectUtils.isEmpty(serviceOne)) {
|
|
|
+ String clientSecret = SM4Utils.decryptData_ECB(serviceOne.getClientSecret(), "4370780c9a8c43e5");
|
|
|
+ if (clientSecret.equals(svcAddress.getClientSecret())) {
|
|
|
+ ArrayList<String> objects = apiTokenUtils.createGeoHazardMonitorToken(svcAddress.getGrantType(), svcAddress.getClientId(), svcAddress.getClientSecret());
|
|
|
+ if (objects.size() > 0) {
|
|
|
+ RespGeoHazardMonitorVo respGeoHazardMonitorVo = new RespGeoHazardMonitorVo();
|
|
|
+ respGeoHazardMonitorVo.setAccessToken(objects.get(1));
|
|
|
+ Long l = Long.valueOf(objects.get(0));
|
|
|
+ respGeoHazardMonitorVo.setExpiresIn(l / 1000);
|
|
|
+ respGeoHazardMonitorVo.setTokenType("令牌类型");
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "成功");
|
|
|
+ jsonObject.put("data", respGeoHazardMonitorVo);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "生成token失败");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "客户端密钥错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "参数验证失败");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 报警信息数据传输
|
|
|
+ */
|
|
|
+ @PostMapping("/api/alarm")
|
|
|
+ @Transactional
|
|
|
+ public String alarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
+ log.info("token:{}", token);
|
|
|
+ log.info("parameter:{}", parameter);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ if (StringUtils.isNotEmpty(token)) {
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmAttr())) {
|
|
|
+ if (!reqMsgAlarmVo.getAlarmAttr().matches(PATTERN)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "你填写的报警病害属性不符合规则!!!");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (reqMsgAlarmVo.getAlarmTime().toString().length() == 10) {
|
|
|
+ reqMsgAlarmVo.setAlarmTime(reqMsgAlarmVo.getAlarmTime() * 1000);
|
|
|
+ }
|
|
|
+ log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
|
|
|
+
|
|
|
+// RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
|
|
|
+// LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
+// if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmMile())) {
|
|
|
+// wrapper.ge(BaseCameraManagement::getBeginMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+// wrapper.le(BaseCameraManagement::getEndMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+// }
|
|
|
+// List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(wrapper);
|
|
|
+// log.info("baseCameraManagement:{}", baseCameraManagementList);
|
|
|
+// if (baseCameraManagementList.size() <= 0) {
|
|
|
+// jsonObject.put("resultCode", 0);
|
|
|
+// jsonObject.put("message", "失败");
|
|
|
+// jsonObject.put("data", "报警里程位置没有可用的相机!!!");
|
|
|
+// return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+// }
|
|
|
+ //todo 需要根据报警里程位置 拉取相机的录制视频
|
|
|
+ LambdaQueryWrapper<MsgAlarm> lw = new LambdaQueryWrapper<MsgAlarm>();
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmId())) {
|
|
|
+ lw.eq(MsgAlarm::getAlarmId, reqMsgAlarmVo.getAlarmId());
|
|
|
+ }
|
|
|
+ MsgAlarm alarm = msgAlarmService.getOne(lw);
|
|
|
+ log.info("alarm:{}", alarm);
|
|
|
+ BaseUser admin = baseUserService.getUserName("admin");
|
|
|
+ MsgAlarmFrequency msgAlarmVice = new MsgAlarmFrequency();
|
|
|
+ if (ObjectUtils.isEmpty(alarm)) {
|
|
|
+ MsgAlarm msgAlarm = new MsgAlarm();
|
|
|
+ BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
|
|
|
+ BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
|
|
|
+ msgAlarm.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarm.setUpdateBy(admin.getUserId());
|
|
|
+ log.info("时间++++ long ---- " + reqMsgAlarmVo.getAlarmTime());
|
|
|
+ log.info("时间++++" + new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ log.info("时间++++get" + msgAlarm.getAlarmTime());
|
|
|
+ msgAlarm.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarmService.save(msgAlarm);
|
|
|
+ Files[] files1 = reqMsgAlarmVo.getFiles();
|
|
|
+ if (files1.length > 0) {
|
|
|
+ for (int i = 0; i < files1.length; i++) {
|
|
|
+ MsgAlarmExt msgAlarmExt = new MsgAlarmExt();
|
|
|
+ msgAlarmExt.setAlarmId(msgAlarm.getAlarmId());
|
|
|
+ msgAlarmExt.setAlarmAttPath(files1[i].fileUrl);
|
|
|
+ msgAlarmExt.setAlarmAttType(files1[i].fileType);
|
|
|
+ msgAlarmExtService.save(msgAlarmExt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ msgAlarmVice.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setUpdateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
+// respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
|
|
|
+// respMsgAlarmVo.setIsCancel(2);
|
|
|
+// respMsgAlarmVo.setCancelTime(null);
|
|
|
+
|
|
|
+ } else {
|
|
|
+ BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
|
|
|
+ msgAlarmVice.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setUpdateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
+// respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
|
|
|
+// respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
|
|
|
+// respMsgAlarmVo.setIsCancel(alarm.getIsRelease());
|
|
|
+// if (!ObjectUtils.isEmpty(alarm.getReleasedTime())) {
|
|
|
+// respMsgAlarmVo.setCancelTime(alarm.getReleasedTime().getTime());
|
|
|
+// }
|
|
|
+// respMsgAlarmVo.setCancelTime(null);
|
|
|
+ }
|
|
|
+// try {
|
|
|
+// MsgAlarm alarms = msgAlarmService.getOne(lw);
|
|
|
+// log.info("sdkUrl:{}", sdkUrl);
|
|
|
+// log.info("alarmJSON :{}", JSON.toJSONString(alarms));
|
|
|
+//// String result = HttpClientUtil.postJson(sdkUrl, JSON.toJSONString(alarms));
|
|
|
+//// log.info("result:{}", result);
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.info(e.getMessage());
|
|
|
+// e.printStackTrace();
|
|
|
+// jsonObject.put("resultCode", 0);
|
|
|
+// jsonObject.put("message", "失败");
|
|
|
+// jsonObject.put("data", "消息推送失败");
|
|
|
+// return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+// }
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "成功");
|
|
|
+ jsonObject.put("data", null);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 2);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "token验证失败");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ JSONObject res = new JSONObject();
|
|
|
+ Files[] files = new Files[1];
|
|
|
+ files[0] = new Files();
|
|
|
+ files[0].fileUrl = "/1244/1/25/2023-03-03/63a1fe3084f24928915dafcf8a47a925.png";
|
|
|
+ files[0].fileType = 1;
|
|
|
+ res.put("alarmMile", 14000);
|
|
|
+ res.put("lineDir", 1);
|
|
|
+ res.put("alarmRailway", "G502");
|
|
|
+ res.put("alarmId", "42010001541320001115");
|
|
|
+ res.put("alarmTime", 1681183564L);
|
|
|
+ res.put("content", "报警内容");
|
|
|
+ res.put("alarmType", 1);
|
|
|
+ res.put("alarmLevel", 2);
|
|
|
+ res.put("alarmConfidence", 1);
|
|
|
+ res.put("alarmAttr", "1280,1280,80,0,738,660");
|
|
|
+ res.put("files", files);
|
|
|
+ String s = SM4Utils.encryptData_ECB(JSONObject.toJSONString(res), "4370780c9a8c43e5");
|
|
|
+ System.out.println(s);
|
|
|
+
|
|
|
+ }
|
|
|
+}
|