记得上下班打卡 | git大法好,push需谨慎

Commit 8ac15eb1 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/jxl_camera_0110' into pre

parents cace5056 2d50e1f9
...@@ -26,6 +26,11 @@ public class KylinRedisConst { ...@@ -26,6 +26,11 @@ public class KylinRedisConst {
public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:"; public static final String ORDER_REFUND_BY_ORDER_ID = "kylin:order:refund:orderId:";
public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:"; public static final String ORDER_REFUND = "kylin:order:refund:orderRefundsId:";
public static final String CAMERA_DEVICES = "kylin:cameraDevices:list";
public static final String CAMERA_DEVICES_FIELD = "kylin:cameraDevices:fieldId:";
public static final String CAMERA_DEVICE_GB_INFO = "kylin:cameraDevices:gbId:";
public static final String CAMERA_DEVICE_PERSON_NUM = "kylin:cameraDevices:personNum:cameraId:";
public static final String BUY_NOTICE = "kylin:buyNotice";//购票须知 public static final String BUY_NOTICE = "kylin:buyNotice";//购票须知
public static final String TICKET_EXPRESS_MODULE_P = "kylin:ticket:express_module:p:";//票种快递票模板关联vo [第三方非线上] public static final String TICKET_EXPRESS_MODULE_P = "kylin:ticket:express_module:p:";//票种快递票模板关联vo [第三方非线上]
public static final String TICKET_EXPRESS_MODULE = "kylin:ticket:express_module:";//票种快递票模板关联vo [线上] public static final String TICKET_EXPRESS_MODULE = "kylin:ticket:express_module:";//票种快递票模板关联vo [线上]
......
package com.liquidnet.service.kylin.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.kylin.entity.KylinCamera;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 人流量排队检测摄像头表
* </p>
*
* @author jiangxiulong
* @since 2022-01-11
*/
@Data
@ApiModel
public class KylinApiCameraDevicesVo implements Serializable {
private static final long serialVersionUID = 3886640525869906268L;
@ApiModelProperty(value = "camera_id")
private String cameraId;
@ApiModelProperty(value = "场地ID")
private String fieldId;
@ApiModelProperty(value = "地点类型 1卫生间 2。。。")
private Integer siteType;
@ApiModelProperty(value = "设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)")
private String status;
@ApiModelProperty(value = "创建时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
@ApiModelProperty(value = "修改时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
@ApiModelProperty(value = "检测到的人数")
private Integer personNum;
private static final KylinApiCameraDevicesVo obj = new KylinApiCameraDevicesVo();
public static KylinApiCameraDevicesVo getNew() {
try {
return (KylinApiCameraDevicesVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinApiCameraDevicesVo();
}
}
public KylinApiCameraDevicesVo copy(KylinCamera source) {
KylinApiCameraDevicesVo kylinApiCameraDevicesVo = KylinApiCameraDevicesVo.getNew();
if (null == source) return null;
kylinApiCameraDevicesVo.setCameraId(source.getCameraId());
kylinApiCameraDevicesVo.setFieldId(source.getFieldId());
kylinApiCameraDevicesVo.setSiteType(source.getSiteType());
kylinApiCameraDevicesVo.setStatus(source.getStatus());
kylinApiCameraDevicesVo.setCreatedAt(source.getCreatedAt());
kylinApiCameraDevicesVo.setUpdatedAt(source.getUpdatedAt());
return kylinApiCameraDevicesVo;
}
/*{
"TotalCount": 1,
"RequestId": "D459D326-9D2D-5148-A8BA-AADEC8F2C9AF",
"PageSize": 20,
"PageNum": 1,
"PageCount": 1,
"Devices": [
{
"AlarmMethod": "",
"Description": "{\"test\":\"value\"}",
"CreatedTime": "2022-01-10T11:07:17+08:00",
"Ip": "",
"Port": 0,
"Latitude": "0.0000000000",
"Url": "",
"Name": "人流量监控",
"GbId": "20220101202301070001",
"AutoStart": false,
"Dsn": "",
"Password": "123456",
"Directory": {},
"ParentId": "",
"Status": "on",
"Enabled": true,
"Params": "{}",
"Vendor": "other",
"Longitude": "0.0000000000",
"RegisteredTime": "2022-01-11T11:13:12+08:00",
"GroupId": "410751715516867255-cn-beijing",
"PosInterval": 5,
"Type": "ipc",
"DirectoryId": "410751715516867255-cn-beijing",
"Username": "20220101202301070001",
"AutoPos": true,
"Stats": {},
"Id": "411719749995806610-cn-beijing"
}
]
}*/
}
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 人流量排队检测摄像头截图回调
* </p>
*
* @author jiangxiulong
* @since 2022-01-14
*/
@Data
@ApiModel
public class KylinCameraDeviceCallBackVo implements Serializable {
private static final long serialVersionUID = -7824619649886426754L;
private String OssObject;
private String SnapshotUrl;
private String Event;
private String StreamName;
private String CreateTime;
private String Height;
private String DomainName;
private String OssEndpoint;
private String AppName;
private String Width;
private String OssBucket;
private String Size;
/*{
"OssObject":"��������ؽ�ͼ/live/20220101202301070001.jpg",
"SnapshotUrl":"http://zhengzai-live.oss-cn-beijing.aliyuncs.com/��������ؽ�ͼ/live/20220101202301070001.jpg",
"Event":"Snapshot",
"StreamName":"20220101202301070001",
"CreateTime":"2022-01-10T11:35:21Z",
"Height":"1080",
"DomainName":"image.zhengzai.tv",
"OssEndpoint":"oss-cn-beijing.aliyuncs.com",
"AppName":"live",
"Width":"1920",
"OssBucket":"zhengzai-live",
"Size":"115657"
}*/
}
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 人流量排队检测摄像头表
* </p>
*
* @author jiangxiulong
* @since 2022-01-11
*/
@Data
@ApiModel
public class KylinCameraDevicesVo implements Serializable {
private static final long serialVersionUID = 87823760599373667L;
/*@ApiModelProperty(value = "camera_id")
private String cameraId;
@ApiModelProperty(value = "设备用户名/国标ID")
private String streamName;
@ApiModelProperty(value = "场地ID")
private String fieldId;
@ApiModelProperty(value = "截图url")
private String imgUrl;
@ApiModelProperty(value = "地点类型 1卫生间 2。。。")
private Integer siteType;
@ApiModelProperty(value = "创建时间")
private String createdAt;
@ApiModelProperty(value = "修改时间")
private String updatedAt;*/
@ApiModelProperty(value = "设备描述 暂时用来村特殊参数json")
private String Description;
@ApiModelProperty(value = "国标ID")
private String GbId;
@ApiModelProperty(value = "设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)")
private String status;
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.entity.KylinCameraRecord;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 人流量检测记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
public interface IKylinCameraRecordService {
}
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.entity.KylinCamera;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 人流量排队检测摄像头表 服务类
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
public interface IKylinCameraService {
List<KylinApiCameraDevicesVo> cameraList(String fieldId, Integer siteType);
}
...@@ -148,6 +148,8 @@ global-auth: ...@@ -148,6 +148,8 @@ global-auth:
- ${liquidnet.info.context}/performance/calendarPerformances - ${liquidnet.info.context}/performance/calendarPerformances
- ${liquidnet.info.context}/performance/* - ${liquidnet.info.context}/performance/*
- ${liquidnet.info.context}/myPerformance/* - ${liquidnet.info.context}/myPerformance/*
# 场地摄像头列表
- ${liquidnet.info.context}/camera/list
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/order/details - ${liquidnet.info.context}/order/details
- ${liquidnet.info.context}/order/transfer* - ${liquidnet.info.context}/order/transfer*
......
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 人流量排队检测摄像头表
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinCamera implements Serializable, Cloneable {
private static final long serialVersionUID = 713935834396315177L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* camera_id
*/
private String cameraId;
/**
* 国标ID
*/
private String gbId;
/**
* 截图url
*/
private String imgUrl;
/**
* 场地ID
*/
private String fieldId;
/**
* 地点类型 1卫生间 2。。。
*/
private Integer siteType;
/**
* 设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)
*/
private String status;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private static final KylinCamera obj = new KylinCamera();
public static KylinCamera getNew() {
try {
return (KylinCamera) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinCamera();
}
}
}
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 人流量检测记录表
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinCameraRecord implements Serializable, Cloneable {
private static final long serialVersionUID = -7063749314663361848L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* camera_record_id
*/
private String cameraRecordId;
/**
* camera_id
*/
private String cameraId;
/**
* 检测到的人数
*/
private Integer personNum;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
private static final KylinCameraRecord obj = new KylinCameraRecord();
public static KylinCameraRecord getNew() {
try {
return (KylinCameraRecord) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinCameraRecord();
}
}
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.KylinCamera;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 人流量排队检测摄像头表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
public interface KylinCameraMapper extends BaseMapper<KylinCamera> {
}
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.KylinCameraRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 人流量检测记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
public interface KylinCameraRecordMapper extends BaseMapper<KylinCameraRecord> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinCameraMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.kylin.mapper.KylinCameraRecordMapper">
</mapper>
...@@ -5,6 +5,7 @@ import feign.hystrix.FallbackFactory; ...@@ -5,6 +5,7 @@ import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Component @Component
@FeignClient( @FeignClient(
...@@ -19,4 +20,13 @@ public interface FeignPlatformApiClient { ...@@ -19,4 +20,13 @@ public interface FeignPlatformApiClient {
@GetMapping("refund/overtimeRefund") @GetMapping("refund/overtimeRefund")
ResponseDto<String> overtimeRefund(); ResponseDto<String> overtimeRefund();
@GetMapping("camera/detectPedestrian")
ResponseDto<String> detectPedestrian();
@GetMapping("camera/describeDevices")
ResponseDto<String> describeDevices(
@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize
);
} }
...@@ -7,6 +7,7 @@ import com.liquidnet.service.feign.platform.api.FeignPlatformApiClient; ...@@ -7,6 +7,7 @@ import com.liquidnet.service.feign.platform.api.FeignPlatformApiClient;
import com.liquidnet.service.feign.platform.kylin.FeignPlatformFreightClient; import com.liquidnet.service.feign.platform.kylin.FeignPlatformFreightClient;
import com.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient; import com.liquidnet.service.feign.platform.task.FeignPlatformCandyTaskClient;
import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -30,11 +31,47 @@ public class PlatformTaskHandler { ...@@ -30,11 +31,47 @@ public class PlatformTaskHandler {
@Autowired @Autowired
FeignPlatformApiClient feignPlatformApiClient; FeignPlatformApiClient feignPlatformApiClient;
@XxlJob(value = "sev-platform:describeDevices")
public ReturnT<String> describeDevices() {
try {
String jobParam = XxlJobHelper.getJobParam();//执行参数
log.info("jobParam = " + jobParam);
String[] paramArray = jobParam.split(",");
String result = feignPlatformApiClient.describeDevices(Integer.parseInt(paramArray[0]), Integer.parseInt(paramArray[1])).getData();
log.info("describeDevices:结果:" + result);
ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(result);
return success;
} catch (Exception e) {
log.error("exception of handler:{}", e.getMessage(), e);
ReturnT<String> fail = ReturnT.FAIL;
fail.setMsg(e.getLocalizedMessage());
return fail;
}
}
@XxlJob(value = "sev-platform:detectPedestrian")
public ReturnT<String> detectPedestrian() {
try {
String result = feignPlatformApiClient.detectPedestrian().getData();
log.info("detectPedestrian:结果:" + result);
ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(result);
return success;
} catch (Exception e) {
log.error("exception of handler:{}", e.getMessage(), e);
ReturnT<String> fail = ReturnT.FAIL;
fail.setMsg(e.getLocalizedMessage());
return fail;
}
}
@XxlJob(value = "sev-platform:overtimeRefund") @XxlJob(value = "sev-platform:overtimeRefund")
public ReturnT<String> overtimeRefund() { public ReturnT<String> overtimeRefund() {
try { try {
String result = feignPlatformApiClient.overtimeRefund().getData(); String result = feignPlatformApiClient.overtimeRefund().getData();
log.info("overtimeRefund:结果:"+result); log.info("overtimeRefund:结果:" + result);
ReturnT<String> success = ReturnT.SUCCESS; ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(result); success.setMsg(result);
return success; return success;
...@@ -50,7 +87,7 @@ public class PlatformTaskHandler { ...@@ -50,7 +87,7 @@ public class PlatformTaskHandler {
public ReturnT<String> alipayActiveCallbackHandler() { public ReturnT<String> alipayActiveCallbackHandler() {
try { try {
String result = feignPlatformAlipayBackClient.alipayActiveCallback().getData(); String result = feignPlatformAlipayBackClient.alipayActiveCallback().getData();
log.info("alipayActiveCallback:结果:"+result); log.info("alipayActiveCallback:结果:" + result);
ReturnT<String> success = ReturnT.SUCCESS; ReturnT<String> success = ReturnT.SUCCESS;
success.setMsg(result); success.setMsg(result);
return success; return success;
...@@ -133,6 +170,7 @@ public class PlatformTaskHandler { ...@@ -133,6 +170,7 @@ public class PlatformTaskHandler {
return fail; return fail;
} }
} }
//运费 //运费
@XxlJob(value = "sev-platform:getFreightChargeHandler") @XxlJob(value = "sev-platform:getFreightChargeHandler")
public ReturnT<String> getFreightChargeHandler() { public ReturnT<String> getFreightChargeHandler() {
......
drop TABLE if exists `kylin_camera`;
CREATE TABLE `kylin_camera`
(
`mid` int unsigned NOT NULL AUTO_INCREMENT,
`camera_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'camera_id',
`gb_id` varchar(255) NOT NULL DEFAULT '' COMMENT '国标ID',
`img_url` varchar(500) NOT NULL DEFAULT '' COMMENT '截图url',
`field_id` varchar(64) NOT NULL DEFAULT '' COMMENT '场地ID',
`site_type` tinyint NOT NULL DEFAULT 0 COMMENT '地点类型 1卫生间 2。。。',
`status` varchar(64) NOT NULL DEFAULT '' COMMENT '设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
KEY `idx_camera_id` (`camera_id`),
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '人流量排队检测摄像头表';
drop TABLE if exists `kylin_camera_record`;
CREATE TABLE `kylin_camera_record`
(
`mid` int unsigned NOT NULL AUTO_INCREMENT,
`camera_record_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'camera_record_id',
`camera_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'camera_id',
`person_num` int NOT NULL DEFAULT 0 COMMENT '检测到的人数',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
KEY `idx_camera_record_id` (`camera_record_id`),
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '人流量检测记录表';
package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.service.impl.KylinCameraServiceImpl;
import com.liquidnet.service.kylin.utils.ObjectUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 人流量排队检测摄像头表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Api(tags = "人体检测")
@RestController
@RequestMapping("/camera")
@Slf4j
public class KylinCameraController {
@Autowired
private KylinCameraServiceImpl cameraService;
@GetMapping("list")
@ApiOperation("场地摄像头列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "fieldId", value = "场地ID", required = true),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "siteType", value = "地点类型 1卫生间 2。。。"),
})
public ResponseDto<List<KylinApiCameraDevicesVo>> cameraList(
@RequestParam() String fieldId,
@RequestParam(defaultValue = "0") Integer siteType
) {
try {
List<KylinApiCameraDevicesVo> result = cameraService.cameraList(fieldId, siteType);
return ResponseDto.success(result);
} catch (Exception e) {
log.error("场地摄像头列表Error", e);
return ResponseDto.success(ObjectUtil.getKylinApiCameraDevicesVoArrayList());
}
}
}
package com.liquidnet.service.kylin.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 人流量检测记录表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@RestController
@RequestMapping("/cameraRecord")
public class KylinCameraRecordController {
}
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.entity.KylinCameraRecord;
import com.liquidnet.service.kylin.mapper.KylinCameraRecordMapper;
import com.liquidnet.service.kylin.service.IKylinCameraRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 人流量检测记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Service
public class KylinCameraRecordServiceImpl implements IKylinCameraRecordService {
}
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.service.IKylinCameraService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 人流量排队检测摄像头表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Service
public class KylinCameraServiceImpl implements IKylinCameraService {
@Autowired
private DataUtils dataUtils;
@Override
public List<KylinApiCameraDevicesVo> cameraList(String fieldId, Integer siteType) {
List<KylinApiCameraDevicesVo> list = dataUtils.getCameraDevices(fieldId);
ArrayList<KylinApiCameraDevicesVo> devicesVoArrayList = ObjectUtil.getKylinApiCameraDevicesVoArrayList();
for (KylinApiCameraDevicesVo devicesVo : list) {
devicesVo.setPersonNum(dataUtils.getCameraDevicePersonNum(devicesVo.getCameraId()));
if (siteType > 0 && devicesVo.getSiteType() == siteType) {
devicesVoArrayList.add(devicesVo);
}
}
if (siteType > 0) {
return devicesVoArrayList;
} else {
return list;
}
}
}
...@@ -7,6 +7,7 @@ import com.liquidnet.commons.lang.util.IPUtil; ...@@ -7,6 +7,7 @@ import com.liquidnet.commons.lang.util.IPUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundageAll; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundageAll;
...@@ -851,4 +852,23 @@ public class DataUtils { ...@@ -851,4 +852,23 @@ public class DataUtils {
redisUtil.uLock(redisKey); redisUtil.uLock(redisKey);
} }
public List<KylinApiCameraDevicesVo> getCameraDevices(String fieldId) {
String redisKey = KylinRedisConst.CAMERA_DEVICES_FIELD.concat(fieldId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return ObjectUtil.getKylinApiCameraDevicesVoArrayList();
} else {
return (List<KylinApiCameraDevicesVo>) obj;
}
}
public Integer getCameraDevicePersonNum(String cameraId) {
String redisKey = KylinRedisConst.CAMERA_DEVICE_PERSON_NUM.concat(cameraId);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return 0;
} else {
return (int) obj;
}
}
} }
...@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.utils; ...@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.utils;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundage;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
...@@ -30,6 +31,7 @@ public class ObjectUtil { ...@@ -30,6 +31,7 @@ public class ObjectUtil {
private static final ArrayList<AdamEntersVo> arrayListObject = new ArrayList<>(); private static final ArrayList<AdamEntersVo> arrayListObject = new ArrayList<>();
private static final ArrayList<OrderRefundPoundage> orderRefundPoundageArrayList = new ArrayList<>(); private static final ArrayList<OrderRefundPoundage> orderRefundPoundageArrayList = new ArrayList<>();
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>(); private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>();
public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() { public static ArrayList<KylinStationPerformanceVo> getKylinStationPerformanceVoArrayList() {
...@@ -91,4 +93,8 @@ public class ObjectUtil { ...@@ -91,4 +93,8 @@ public class ObjectUtil {
public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() { public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone(); return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
} }
public static ArrayList<KylinApiCameraDevicesVo> getKylinApiCameraDevicesVoArrayList() {
return (ArrayList<KylinApiCameraDevicesVo>) kylinApiCameraDevicesVoArrayList.clone();
}
} }
...@@ -77,6 +77,26 @@ ...@@ -77,6 +77,26 @@
<groupId>com.aliyun</groupId> <groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dypnsapi</artifactId> <artifactId>aliyun-java-sdk-dypnsapi</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>tea-openapi</artifactId>
<version>0.0.7</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>openplatform20191219</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>oss-client</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-facebody</artifactId>
<version>1.2.27</version>
</dependency>
<dependency> <dependency>
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo; import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
...@@ -12,6 +13,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; ...@@ -12,6 +13,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.entity.KylinBuyNotice; import com.liquidnet.service.kylin.entity.KylinBuyNotice;
import com.liquidnet.service.kylin.entity.KylinCamera;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons; import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper; import com.liquidnet.service.kylin.mapper.KylinBuyNoticeMapper;
import com.liquidnet.service.slime.constant.SlimeRedisConst; import com.liquidnet.service.slime.constant.SlimeRedisConst;
...@@ -437,4 +439,49 @@ public class DataUtils { ...@@ -437,4 +439,49 @@ public class DataUtils {
return sweetAppletUsersVo; return sweetAppletUsersVo;
} }
} }
public void setCameraDevices(String fieldId, ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList) {
String redisKey = KylinRedisConst.CAMERA_DEVICES_FIELD.concat(fieldId);
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, kylinApiCameraDevicesVoArrayList);
}
public void setCameraDevicePersonNum(String cameraId, long count) {
String redisKey = KylinRedisConst.CAMERA_DEVICE_PERSON_NUM.concat(cameraId);
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, count);
}
public List<KylinCamera> getCameraDevicesList() {
String redisKey = KylinRedisConst.CAMERA_DEVICES;
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (null == obj) {
return null;
} else {
return (List<KylinCamera>) obj;
}
}
public void setCameraDevicesList(List<KylinCamera> cameraList) {
String redisKey = KylinRedisConst.CAMERA_DEVICES;
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, cameraList);
}
public void delCameraDevicesList() {
String redisKey = KylinRedisConst.CAMERA_DEVICES;
redisDataSourceUtil.getRedisKylinUtil().del(redisKey);
}
public void setCameraDeviceInfo(KylinCamera camera) {
String redisKey = KylinRedisConst.CAMERA_DEVICE_GB_INFO.concat(camera.getGbId());
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, camera);
}
public KylinCamera getCameraDeviceInfo(String streamName) {
String redisKey = KylinRedisConst.CAMERA_DEVICE_GB_INFO.concat(streamName);
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (null == obj) {
return null;
} else {
return (KylinCamera) obj;
}
}
} }
...@@ -5,6 +5,7 @@ import com.liquidnet.service.base.PagedResult; ...@@ -5,6 +5,7 @@ import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.candy.entity.CandyCommonCoupon; import com.liquidnet.service.candy.entity.CandyCommonCoupon;
import com.liquidnet.service.candy.entity.CandyCouponCode; import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.entity.CandyUserCoupon; import com.liquidnet.service.candy.entity.CandyUserCoupon;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons; import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
...@@ -59,6 +60,7 @@ public class ObjectUtil { ...@@ -59,6 +60,7 @@ public class ObjectUtil {
private static final PagedResult<AdamDisposedVo> adamDisposedVoPagedResult = new PagedResult<>(); private static final PagedResult<AdamDisposedVo> adamDisposedVoPagedResult = new PagedResult<>();
private static final PagedResult<AdamDisposedUserVo> adamDisposedUserVoPagedResult = new PagedResult<>(); private static final PagedResult<AdamDisposedUserVo> adamDisposedUserVoPagedResult = new PagedResult<>();
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>(); private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
private static final ArrayList<KylinApiCameraDevicesVo> kylinApiCameraDevicesVoArrayList = new ArrayList<>();
public static ArrayList<AdamTagParentVo> getAdamTagParentVoArrayList() { public static ArrayList<AdamTagParentVo> getAdamTagParentVoArrayList() {
return (ArrayList<AdamTagParentVo>) adamTagParentVoArrayList.clone(); return (ArrayList<AdamTagParentVo>) adamTagParentVoArrayList.clone();
...@@ -119,4 +121,8 @@ public class ObjectUtil { ...@@ -119,4 +121,8 @@ public class ObjectUtil {
public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() { public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone(); return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
} }
public static ArrayList<KylinApiCameraDevicesVo> getKylinApiCameraDevicesVoArrayList() {
return (ArrayList<KylinApiCameraDevicesVo>) kylinApiCameraDevicesVoArrayList.clone();
}
} }
package com.liquidnet.service.platform.utils;
import com.aliyun.fileform.models.FileField;
import com.aliyun.openplatform20191219.models.AuthorizeFileUploadRequest;
import com.aliyun.openplatform20191219.models.AuthorizeFileUploadResponse;
import com.aliyun.oss.models.PostObjectRequest;
import com.aliyun.tea.TeaConverter;
import com.aliyun.tea.TeaPair;
import com.aliyun.teautil.models.RuntimeOptions;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ViapiFileUtilAdvance {
public static InputStream buildInputStream(String filePath) throws IOException {
if (StringUtils.startsWithAny(filePath, new CharSequence[]{"http://", "https://"})) {
filePath = URLDecoder.decode(filePath, "UTF-8");
URL url = new URL(filePath);
URLConnection urlConnection = url.openConnection();
return urlConnection.getInputStream();
} else {
File key1 = new File(filePath);
return new FileInputStream(key1);
}
}
public static synchronized ViapiFileUtilAdvance getInstance(String accessKeyId, String accessKeySecret, String regionId) throws Exception {
String mapKey = String.format("%s:%s:%s", regionId, accessKeyId, accessKeySecret);
ViapiFileUtilAdvance fileUtils = _map.get(mapKey);
if (fileUtils == null) {
_map.putIfAbsent(mapKey, new ViapiFileUtilAdvance(accessKeyId, accessKeySecret, regionId));
fileUtils = _map.get(mapKey);
}
return fileUtils;
}
private ViapiFileUtilAdvance(String accessKeyId, String accessKeySecret, String regionId) throws Exception {
Map<String, Object> cm = new HashMap<>();
cm.put("regionId", regionId);
cm.put("autoretry", "true");
cm.put("accessKeyId", accessKeyId);
cm.put("accessKeySecret", accessKeySecret);
cm.put("connectTimeout", 15 * 1000);
cm.put("readTimeout", 30 * 1000);
cm.put("maxIdleConns", 200);
cm.put("type", "access_key");
cm.put("endpoint", "openplatform.aliyuncs.com");
_runtime = RuntimeOptions.build(cm);
com.aliyun.tearpc.models.Config authConfig = com.aliyun.tearpc.models.Config.build(cm);
_authClient = new com.aliyun.openplatform20191219.Client(authConfig);
//ossEndpointType = "internal";//aliyun-vpc
_ossConfig = com.aliyun.oss.models.Config.build(TeaConverter.buildMap(
new TeaPair("accessKeySecret", accessKeySecret),
new TeaPair("type", "access_key"),
new TeaPair("protocol", _authClient._protocol),
new TeaPair("regionId", _authClient._regionId)
));
}
public String upload(InputStream inputStream) throws Exception {
AuthorizeFileUploadRequest authRequest = AuthorizeFileUploadRequest.build(TeaConverter.buildMap(
new TeaPair("product", "imageseg"),
new TeaPair("regionId", _authClient._regionId)
));
AuthorizeFileUploadResponse authResponse = _authClient.authorizeFileUploadWithOptions(authRequest, _runtime);
com.aliyun.oss.models.Config ossConfig = new com.aliyun.oss.models.Config();
com.aliyun.openapiutil.Client.convert(_ossConfig, ossConfig);
ossConfig.accessKeyId = authResponse.accessKeyId;
ossConfig.endpoint = com.aliyun.openapiutil.Client.getEndpoint(authResponse.endpoint, authResponse.useAccelerate, ossEndpointType);
com.aliyun.oss.Client ossClient = new com.aliyun.oss.Client(ossConfig);
FileField fileObj = FileField.build(TeaConverter.buildMap(
new TeaPair("filename", authResponse.objectKey),
new TeaPair("content", inputStream),
new TeaPair("contentType", "")
));
PostObjectRequest.PostObjectRequestHeader ossHeader = PostObjectRequest.PostObjectRequestHeader.build(TeaConverter.buildMap(
new TeaPair("accessKeyId", authResponse.accessKeyId),
new TeaPair("policy", authResponse.encodedPolicy),
new TeaPair("signature", authResponse.signature),
new TeaPair("key", authResponse.objectKey),
new TeaPair("file", fileObj),
new TeaPair("successActionStatus", "201")
));
PostObjectRequest uploadRequest = PostObjectRequest.build(TeaConverter.buildMap(
new TeaPair("bucketName", authResponse.bucket),
new TeaPair("header", ossHeader)
));
com.aliyun.ossutil.models.RuntimeOptions ossRuntime = new com.aliyun.ossutil.models.RuntimeOptions();
com.aliyun.openapiutil.Client.convert(_runtime, ossRuntime);
ossClient.postObject(uploadRequest, ossRuntime);
String imageURL = "http://" + authResponse.bucket + "." + authResponse.endpoint + "/" + authResponse.objectKey + "";
return imageURL;
}
RuntimeOptions _runtime;
com.aliyun.openplatform20191219.Client _authClient;
com.aliyun.oss.models.Config _ossConfig;
String ossEndpointType = null;
static Map<String, ViapiFileUtilAdvance> _map = new ConcurrentHashMap<>();
}
\ No newline at end of file
# ------------------------????----------------------------
kylin_camera_record.insert=INSERT INTO kylin_camera_record (camera_record_id, camera_id, person_num) VALUES (?,?,?)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment