diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 79a2c69fe..e050e7d03 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -373,21 +373,24 @@ CREATE TABLE hard_broadcast DROP TABLE IF EXISTS hard_auth; CREATE TABLE hard_auth ( - id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', - auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉', - user_id bigint NOT NULL COMMENT '预定用户', - hard_id bigint NOT NULL COMMENT '硬件id', - cabinet_no int DEFAULT NULL COMMENT '货柜编号', - auth_status char(1) DEFAULT '0' COMMENT '是否授权', - auth_time datetime DEFAULT NULL COMMENT '授权时间', - is_done char(1) DEFAULT '0' COMMENT '是否完成', - is_done_time datetime DEFAULT NULL COMMENT '完成时间', - create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', - create_time datetime DEFAULT NULL COMMENT '创建时间', - update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', - update_time datetime DEFAULT NULL COMMENT '修改时间', - del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', - tenant_id bigint DEFAULT NULL COMMENT '租户ID', + id bigint NOT NULL AUTO_INCREMENT COMMENT '编号', + auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉', + user_id bigint NOT NULL COMMENT '预定用户', + hard_id bigint NOT NULL COMMENT '硬件id', + cabinet_no int DEFAULT NULL COMMENT '货柜编号', + auth_status char(1) DEFAULT '0' COMMENT '是否授权', + auth_time datetime DEFAULT NULL COMMENT '授权时间', + is_done char(1) DEFAULT '0' COMMENT '是否完成', + is_done_time datetime DEFAULT NULL COMMENT '完成时间', + is_manual_change varchar(32) DEFAULT NULL COMMENT '是否人工处理', + manual_change_time datetime DEFAULT NULL COMMENT '人工处理时间', + manual_change_remark varchar(512) DEFAULT NULL COMMENT '人工处理备注', + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', PRIMARY KEY (id) ) ENGINE = InnoDB COMMENT ='硬件授权'; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java index 7f3596b26..dead384ac 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardOrderStatusEnum.java @@ -19,6 +19,7 @@ public enum HardOrderStatusEnum { OFFLINE_PAY("6", "没有网络本地支付"), REFUND("10", "退款"), CANCEL("20", "已核销"), + UNFOLLOW("30", "已取消(智能柜使用)"), ; private final String type; private final String description; diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java index 8a9a6421d..37ec0c8fe 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/HardDoorFlowDto.java @@ -3,7 +3,11 @@ package com.bsd.pjcloud.hard.api.dto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; import lombok.Data; +import java.time.LocalDate; + @Data public class HardDoorFlowDto extends HardDoorFlowEntity { + private LocalDate[] createTimeList; + } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java index 131de71b3..b043e4801 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/HardAuthEntity.java @@ -77,6 +77,24 @@ public class HardAuthEntity extends Model { @Schema(description = "完成时间") private LocalDateTime isDoneTime; + /** + * 是否人工处理 + */ + @Schema(description = "是否人工处理") + private String isManualChange; + + /** + * 人工处理时间 + */ + @Schema(description = "人工处理时间") + private LocalDateTime manualChangeTime; + + /** + * 人工处理备注 + */ + @Schema(description = "人工处理时间") + private String manualChangeRemark; + /** * 创建人 */ diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java index 1dddd5400..89d20818b 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardOrderEntity.java @@ -178,11 +178,17 @@ public class HardOrderEntity extends Model { private String refundStatus; /** - * 订单取消时间 + * 订单取消时间(退款订单) */ @Schema(description = "订单取消时间") private LocalDateTime applyCancelTime; + /** + * 订单取消时间(智能柜) + */ + @Schema(description = "订单取消时间(智能柜)") + private LocalDateTime unfollowTime; + /** * 设备上的唯一订单号 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java index 41ceae530..16a988937 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/HardDoorFlowMapper.java @@ -7,6 +7,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.hard.api.dto.HardDoorFlowDto; import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.github.yulichang.query.MPJLambdaQueryWrapper; import org.apache.ibatis.annotations.Mapper; @@ -24,6 +25,12 @@ public interface HardDoorFlowMapper extends PjcloudBaseMapper { * app智能柜授权 */ Long appAuthHardDoor(HardAuthAppDto dto); + + /** + * 判断当前用户信誉 + */ + boolean judgeUserCredit(Long userId); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index 05ac020cd..be6a7b735 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -54,6 +54,11 @@ public interface HardOrderService extends IService { */ Long payHardDoorOrder(HardOrderEntity dto, List ksSpuList); + /** + * 智能柜取消订单 + */ + Long cancelHardDoorOrder(Long orderId); + /** * 快速扣款,离线订单使用 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java index af5333b6c..08e273725 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java @@ -1,6 +1,7 @@ package com.bsd.pjcloud.hard.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; @@ -115,6 +116,20 @@ public class HardAuthServiceImpl extends ServiceImpl() + .eq(HardAuthEntity::getUserId, userId) + .eq(HardAuthEntity::getAuthStatus, YesNoEnum.YES.getCode()) + .eq(HardAuthEntity::getIsDone, YesNoEnum.NO.getCode()) + .ne(HardAuthEntity::getIsManualChange, YesNoEnum.YES.getCode()) + ); + return count <= 5; + } + private void disposeList(List list, HardAuthDto dto) { if (ObjectUtil.isEmpty(list)) return; // 设备 diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java index 72f794042..f45adffc0 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardDoorFlowServiceImpl.java @@ -40,8 +40,10 @@ import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionCallbackDto; import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionDto; import com.bsd.pjcloud.thirdparty.vo.door.DoorOpenVo; import com.bsd.pjcloud.thirdparty.vo.ks.KsRecognitionVo; +import com.bsd.pjcloud.wallet.api.feign.RemoteWalletService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -67,6 +69,8 @@ public class HardDoorFlowServiceImpl extends ServiceImpl spuList = hardSpuJoinService.getSpuList(hardDoorDetail.getId(), dto.getCabinetNo()); if (ObjectUtil.isEmpty(spuList) || spuList.isEmpty()) throw new RuntimeException("货柜商品信息为空,请上架"); @@ -223,7 +238,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl 0) { + log.error("|{}|智能柜订单取消失败,订单价格大于0|{}|", TAG, orderId); + return null; + } + if (ObjectUtil.isNotEmpty(order.getOrderStatus()) && ObjectUtil.equals(order.getOrderStatus(), HardOrderStatusEnum.UNFOLLOW.getType())) { + log.error("|{}|智能柜订单取消失败,订单已核销|{}|", TAG, orderId); + return null; + } + HardOrderEntity updateObj = HardOrderEntity.builder() + .id(order.getId()) + .orderStatus(HardOrderStatusEnum.UNFOLLOW.getType()) + .unfollowTime(LocalDateTime.now()) + .build(); + baseMapper.updateById(updateObj); + return updateObj.getId(); + } + @Override @Transactional(rollbackFor = Exception.class) public void fastReduceBalance(HardOrderEntity order) { diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index ec3118e7d..7a1510fbb 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -52,4 +52,7 @@ public interface RemoteWalletService { @GetMapping("/wallet-manage/is-del") R isDel(@RequestParam Long userId); + + @GetMapping("/wallet-manage/inner/is-use-door") + R innserIsUseDoor(@RequestParam Long userId); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index ecb477693..96cf6bb9e 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -126,11 +126,22 @@ public class WalletManageController { return R.ok(true); } + /** + * 这个用户是否能够删除 + */ @GetMapping("/is-del") public R isDel(@RequestParam Long userId) { return R.ok(walletManageService.isDel(userId)); } + /** + * 这个用户是否能够使用智能柜 + */ + @GetMapping("/inner/is-use-door") + public R innserIsUseDoor(@RequestParam Long userId) { + return R.ok(walletManageService.isUseDoor(userId)); + } + /* ************************************* end 远程调用 end ************************************* */