feat:智能柜枚举

fix:钱包余额bug
This commit is contained in:
dzc committed 2025-04-08 15:41:57 +08:00
1 parent 6bbe3c05c0
commit 971e9cba3a
9 files changed
+125 -21

No files matched your search

@@ -0,0 +1,26 @@
package com.bsd.pjcloud.thirdparty.constant.door;
import cn.hutool.core.util.ObjectUtil;
import com.bsd.pjcloud.thirdparty.constant.ThirdZyBizEnumType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
@AllArgsConstructor
@Getter
public enum ThirdDoorApiTypeEnum {
DOOR_API("10", "智能柜接口"),
DISCERN_API("20", "识别接口"),
;
private final String type;
private final String description;
public static ThirdDoorApiTypeEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
}
@@ -1,8 +1,7 @@
package com.bsd.pjcloud.thirdparty.constant;
package com.bsd.pjcloud.thirdparty.constant.door;
import cn.hutool.core.util.ObjectUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import java.util.Arrays;
@@ -0,0 +1,13 @@
package com.bsd.pjcloud.thirdparty.dto.door;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ThirdDoorLogDto extends ThirdDoorLogEntity {
private LocalDateTime[] createTimeList;
}
@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import com.bsd.pjcloud.thirdparty.service.ThirdDoorLogService;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -37,9 +39,9 @@ public class ThirdDoorLogController {
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('third_thirdDoorLog_view')")
public R getThirdDoorLogPage(@ParameterObject Page page, @ParameterObject ThirdDoorLogEntity thirdDoorLog) {
LambdaQueryWrapper<ThirdDoorLogEntity> wrapper = Wrappers.lambdaQuery();
return R.ok(thirdDoorLogService.page(page, wrapper));
public R getThirdDoorLogPage(@ParameterObject Page page, @ParameterObject ThirdDoorLogDto dto) {
DataScope dataScope = null;
return R.ok(thirdDoorLogService.scopePageList(page, dto, dataScope));
}
@Operation(summary = "通过id查询", description = "通过id查询")
@@ -1,11 +1,30 @@
package com.bsd.pjcloud.thirdparty.mapper.door;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ThirdDoorLogMapper extends PjcloudBaseMapper<ThirdDoorLogEntity> {
default Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) {
LambdaQueryWrapper<ThirdDoorLogEntity> wrapper = new LambdaQueryWrapper<ThirdDoorLogEntity>()
.eq(ObjectUtil.isNotEmpty(dto.getApiType()), ThirdDoorLogEntity::getApiType, dto.getApiType())
.eq(ObjectUtil.isNotEmpty(dto.getBizId()), ThirdDoorLogEntity::getBizId, dto.getBizId())
.eq(ObjectUtil.isNotEmpty(dto.getBizType()), ThirdDoorLogEntity::getBizType, dto.getBizType())
.between(
ObjectUtil.isNotEmpty(dto.getCreateTimeList()),
ThirdDoorLogEntity::getCreateTime,
ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[0] : null,
ObjectUtil.isNotEmpty(dto.getCreateTimeList()) ? dto.getCreateTimeList()[1] : null
)
.orderByDesc(ThirdDoorLogEntity::getCreateTime)
.orderByDesc(ThirdDoorLogEntity::getId);
return selectPageByScope(page, wrapper, dataScope);
}
}
@@ -1,8 +1,14 @@
package com.bsd.pjcloud.thirdparty.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import java.util.List;
public interface ThirdDoorLogService extends IService<ThirdDoorLogEntity> {
Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope);
}
@@ -1,11 +1,15 @@
package com.bsd.pjcloud.thirdparty.service.impl.door;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.thirdparty.dto.door.ThirdDoorLogDto;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import com.bsd.pjcloud.thirdparty.mapper.door.ThirdDoorLogMapper;
import com.bsd.pjcloud.thirdparty.service.ThirdDoorLogService;
import org.springframework.stereotype.Service;
/**
* 智能柜日志
*
@@ -14,4 +18,9 @@ import org.springframework.stereotype.Service;
*/
@Service
public class ThirdDoorLogServiceImpl extends ServiceImpl<ThirdDoorLogMapper, ThirdDoorLogEntity> implements ThirdDoorLogService {
@Override
public Page<ThirdDoorLogEntity> scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) {
return baseMapper.scopePageList(page, dto, dataScope);
}
}
@@ -3,7 +3,9 @@ package com.bsd.pjcloud.thirdparty.utils.door.api;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.bsd.pjcloud.thirdparty.constant.ThordDoorApiTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.door.ThirdDoorApiTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.door.ThordDoorApiTypeEnum;
import com.bsd.pjcloud.thirdparty.entity.door.ThirdDoorLogEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -12,37 +14,37 @@ import lombok.NoArgsConstructor;
public class DoorApi {
// 设备注册
public static final Api REGISTER = Api.builder().url("/ams/api/device/register").type(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build();
public static final Api REGISTER = Api.builder().url("/ams/api/device/register").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build();
// 设备信息绑定
public static final Api BIND = Api.builder().url("/ams/api/device/bind").type(ThordDoorApiTypeEnum.BIND).method("post").contentType("application/json").build();
public static final Api BIND = Api.builder().url("/ams/api/device/bind").bizType(ThordDoorApiTypeEnum.BIND).method("post").contentType("application/json").build();
// 查询设备状态
public static final Api STATUS = Api.builder().url("/ams/api/device/status").type(ThordDoorApiTypeEnum.STATUS).method("post").contentType("application/json").build();
public static final Api STATUS = Api.builder().url("/ams/api/device/status").bizType(ThordDoorApiTypeEnum.STATUS).method("post").contentType("application/json").build();
// 设备重启
public static final Api RESTART = Api.builder().url("/ams/api/device/restart").type(ThordDoorApiTypeEnum.RESTART).method("post").contentType("application/json").build();
public static final Api RESTART = Api.builder().url("/ams/api/device/restart").bizType(ThordDoorApiTypeEnum.RESTART).method("post").contentType("application/json").build();
// 设备设置
public static final Api SETTING = Api.builder().url("/ams/api/device/setting").type(ThordDoorApiTypeEnum.SETTING).method("post").contentType("application/json").build();
public static final Api SETTING = Api.builder().url("/ams/api/device/setting").bizType(ThordDoorApiTypeEnum.SETTING).method("post").contentType("application/json").build();
// 音量设置
public static final Api VOLUME = Api.builder().url("/ams/api/device/volume").type(ThordDoorApiTypeEnum.VOLUME).method("post").contentType("application/json").build();
public static final Api VOLUME = Api.builder().url("/ams/api/device/volume").bizType(ThordDoorApiTypeEnum.VOLUME).method("post").contentType("application/json").build();
// 请求开锁
public static final Api OPEN = Api.builder().url("/ams/api/event/open").type(ThordDoorApiTypeEnum.OPEN).method("post").contentType("application/json").build();
public static final Api OPEN = Api.builder().url("/ams/api/event/open").bizType(ThordDoorApiTypeEnum.OPEN).method("post").contentType("application/json").build();
// 调取另一个摄像头视频
public static final Api VIDEO = Api.builder().url("/ams/api/event/video").type(ThordDoorApiTypeEnum.VIDEO).method("post").contentType("application/json").build();
public static final Api VIDEO = Api.builder().url("/ams/api/event/video").bizType(ThordDoorApiTypeEnum.VIDEO).method("post").contentType("application/json").build();
// 门锁开关通知
public static final Api OPEN_CALLBACK = Api.builder().url("/door/callback/open").type(ThordDoorApiTypeEnum.OPEN_CALLBACK).method("post").contentType("application/json").build();
public static final Api OPEN_CALLBACK = Api.builder().url("/door/callback/open").bizType(ThordDoorApiTypeEnum.OPEN_CALLBACK).method("post").contentType("application/json").build();
// 视频地址通知
public static final Api VIDEO_CALLBACK = Api.builder().url("/door/callback/video").type(ThordDoorApiTypeEnum.VIDEO_CALLBACK).method("post").contentType("application/json").build();
public static final Api VIDEO_CALLBACK = Api.builder().url("/door/callback/video").bizType(ThordDoorApiTypeEnum.VIDEO_CALLBACK).method("post").contentType("application/json").build();
// 设备状态通知
public static final Api STATUS_CALLBACK = Api.builder().url("/door/callback/status").type(ThordDoorApiTypeEnum.STATUS_CALLBACK).method("post").contentType("application/json").build();
public static final Api STATUS_CALLBACK = Api.builder().url("/door/callback/status").bizType(ThordDoorApiTypeEnum.STATUS_CALLBACK).method("post").contentType("application/json").build();
@Data
@Builder
@@ -56,7 +58,9 @@ public class DoorApi {
private String contentType;
private ThordDoorApiTypeEnum type;
private ThirdDoorApiTypeEnum apiType = ThirdDoorApiTypeEnum.DOOR_API;
private ThordDoorApiTypeEnum bizType;
public HttpRequest getHttpRequest() {
if (ObjectUtil.equals(method, "post")) {
@@ -67,5 +71,14 @@ public class DoorApi {
return null;
}
}
public ThirdDoorLogEntity getInitLogEntity() {
ThirdDoorLogEntity entity = new ThirdDoorLogEntity();
entity.setBizId(null);
entity.setBizType(bizType.getType());
entity.setApiType(apiType.getType());
entity.setApiUrl(url);
return entity;
}
}
}
@@ -58,8 +58,25 @@
<where>
a.del_flag = 0
<if test="dto.walletRecordMonth != null">
AND a.create_time = (SELECT MAX(sub.create_time) FROM wallet_transaction sub WHERE sub.user_id = a.user_id AND
DATE_FORMAT(sub.create_time, '%Y-%m') &lt;= #{dto.walletRecordMonth})
AND a.create_time = (
SELECT MAX(sub.create_time)
FROM wallet_transaction sub
LEFT JOIN wallet_manage wallet on wallet.id = sub.wallet_id
WHERE sub.user_id = a.user_id
AND DATE_FORMAT(sub.create_time, '%Y-%m') &lt;= #{dto.walletRecordMonth}
<if test="dto.userId != null">
AND sub.user_id = #{dto.userId}
</if>
<if test="dto.userIds != null and dto.userIds.size() != 0">
and sub.user_id in
<foreach collection="dto.userIds" item="v" open="(" close=")" separator=",">
#{v}
</foreach>
</if>
<if test="dto.walletTypeId != null">
AND wallet.wallet_type_id = #{dto.walletTypeId}
</if>
)
</if>
<if test="dto.userId != null">
AND a.user_id = #{dto.userId}