From 971e9cba3a4131376a7cf521e7db6c2aaa12a51a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 8 Apr 2025 15:41:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=99=BA=E8=83=BD=E6=9F=9C=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=20fix:=E9=92=B1=E5=8C=85=E4=BD=99=E9=A2=9Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/door/ThirdDoorApiTypeEnum.java | 26 +++++++++++++ .../{ => door}/ThordDoorApiTypeEnum.java | 3 +- .../thirdparty/dto/door/ThirdDoorLogDto.java | 13 +++++++ .../door/ThirdDoorLogController.java | 8 ++-- .../mapper/door/ThirdDoorLogMapper.java | 21 +++++++++- .../service/ThirdDoorLogService.java | 6 +++ .../impl/door/ThirdDoorLogServiceImpl.java | 9 +++++ .../thirdparty/utils/door/api/DoorApi.java | 39 ++++++++++++------- .../resources/mapper/WalletManageMapper.xml | 21 +++++++++- 9 files changed, 125 insertions(+), 21 deletions(-) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java rename pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/{ => door}/ThordDoorApiTypeEnum.java (93%) create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java new file mode 100644 index 00000000..2d4c989a --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThirdDoorApiTypeEnum.java @@ -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(); + } + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThordDoorApiTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java similarity index 93% rename from pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThordDoorApiTypeEnum.java rename to pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java index 92c39abc..5dfa0f6d 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/ThordDoorApiTypeEnum.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/door/ThordDoorApiTypeEnum.java @@ -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; diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java new file mode 100644 index 00000000..337eff4c --- /dev/null +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/door/ThirdDoorLogDto.java @@ -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; + +} diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java index 86ad543e..fb6b153e 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/door/ThirdDoorLogController.java @@ -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 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查询") diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java index d1d57194..17e9e1aa 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/mapper/door/ThirdDoorLogMapper.java @@ -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 { - + default Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .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); + } } \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java index 8a71be86..31c84029 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdDoorLogService.java @@ -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 { + Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope); } \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java index daf9d65a..94d88e4e 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorLogServiceImpl.java @@ -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 implements ThirdDoorLogService { + + @Override + public Page scopePageList(Page page, ThirdDoorLogDto dto, DataScope dataScope) { + return baseMapper.scopePageList(page, dto, dataScope); + } } \ No newline at end of file diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java index c39af463..f01ad951 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/door/api/DoorApi.java @@ -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; + } } } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletManageMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletManageMapper.xml index 102d93f1..5e7bc203 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletManageMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/WalletManageMapper.xml @@ -58,8 +58,25 @@ a.del_flag = 0 - 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') <= #{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') <= #{dto.walletRecordMonth} + + AND sub.user_id = #{dto.userId} + + + and sub.user_id in + + #{v} + + + + AND wallet.wallet_type_id = #{dto.walletTypeId} + + ) AND a.user_id = #{dto.userId}