feat:开门流程

This commit is contained in:
dzc committed 2025-04-15 20:29:19 +08:00
1 parent a1d3dbc7f2
commit e6fcd91d5c
19 files changed
+298 -40

No files matched your search

+3
View File
@@ -105,6 +105,8 @@ CREATE TABLE hard_door_flow
id bigint NOT NULL COMMENT '编号',
user_id bigint NOT NULL COMMENT '用户编号',
biz_type varchar(32) NOT NULL COMMENT '业务类型',
hard_door_id bigint DEFAULT NULL COMMENT '智能柜id',
cabinet_no int DEFAULT NULL COMMENT '货柜编号',
order_id bigint DEFAULT NULL COMMENT '订单编号',
auth_id bigint DEFAULT NULL COMMENT '授权编号',
# 请求开门
@@ -367,6 +369,7 @@ CREATE TABLE hard_auth
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 '是否完成',
@@ -13,16 +13,10 @@ public class HardAuthAppDto {
private Long userId;
/**
* 智能柜设备id
* 授权id
*/
@NotNull(message = "智能柜设备id不能为空")
private Long doorHardId;
/**
* 货柜编号
*/
@NotNull(message = "货柜编号不能为空")
private Integer cabinetNo;
@NotNull(message = "授权id不能为空")
private Long authId;
/**
* 是否授权
@@ -2,7 +2,6 @@ package com.bsd.pjcloud.hard.api.dto;
import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum;
import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -21,6 +20,11 @@ public class HardDoorFlowOpenDto {
@NotNull(message = "货柜编号不能为空")
private Integer cabinetNo;
/**
* 智能柜子流程id
*/
private Long hardDoorFlowId;
/**
* 流程类型
*/
@@ -0,0 +1,26 @@
package com.bsd.pjcloud.hard.api.dto;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class HardGetAuthAppDto {
/**
* 用户id
*/
private Long userId;
/**
* 智能柜设备id
*/
@NotNull(message = "智能柜设备id不能为空")
private Long doorHardId;
/**
* 货柜编号
*/
@NotNull(message = "货柜编号不能为空")
private Integer cabinetNo;
}
@@ -5,4 +5,10 @@ import lombok.Data;
@Data
public class HardSpuJoinDto extends HardSpuJoinEntity {
/**
* 是否有商品
*/
private Boolean isSpu = false;
}
@@ -41,6 +41,12 @@ public class HardAuthEntity extends Model<HardAuthEntity> {
@Schema(description = "硬件id")
private Long hardId;
/**
* 货柜编号
*/
@Schema(description = "货柜编号")
private Integer cabinetNo;
/**
* 授权类型
*/
@@ -43,6 +43,18 @@ public class HardDoorFlowEntity extends Model<HardDoorFlowEntity> {
@Schema(description = "业务类型")
private String bizType;
/**
* 智能柜id
*/
@Schema(description = "智能柜id")
private Long hardDoorId;
/**
* 货柜编号
*/
@Schema(description = "货柜编号")
private Integer cabinetNo;
/**
* 订单编号
*/
@@ -0,0 +1,18 @@
package com.bsd.pjcloud.hard.api.vo;
import lombok.Data;
@Data
public class HardGetAuthAppVo {
/**
* 授权id
*/
private Long authId;
/**
* 授权信息
*/
private String authDesc;
}
@@ -11,8 +11,10 @@ import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo;
import com.bsd.pjcloud.hard.service.HardAuthService;
import jakarta.validation.Valid;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -41,6 +43,14 @@ public class HardAuthController {
/* ************************************* start app start ************************************* */
@Operation(summary = "app获取智能柜授权信息", description = "app获取智能柜授权信息")
@PostMapping("/app/get-auth-hard-door")
public R<HardGetAuthAppVo> appGetAuthHardDoor(@Valid @RequestBody HardGetAuthAppDto dto) {
PjcloudUser user = SecurityUtils.getUser();
dto.setUserId(user.getId());
return R.ok(hardAuthService.appGetAuthHardDoor(dto));
}
@Operation(summary = "app智能柜授权", description = "app智能柜授权")
@PostMapping("/app/auth-hard-door")
public R appAuthHardDoor(@Valid @RequestBody HardAuthAppDto dto) {
@@ -5,13 +5,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo;
import jakarta.validation.Valid;
public interface HardAuthService extends IService<HardAuthEntity> {
Page<HardAuthVo> scopePageJoin(Page page, HardAuthDto dto, DataScope dataScope);
/**
* app获取智能柜授权信息
*/
HardGetAuthAppVo appGetAuthHardDoor(@Valid HardGetAuthAppDto dto);
/**
* app智能柜授权
*/
@@ -25,7 +25,7 @@ public interface HardDoorFlowService extends IService<HardDoorFlowEntity> {
/**
* 购买开门
*/
void openDoorPay(HardDoorFlowOpenDto dto);
void openDoorPay(HardDoorFlowOpenDto dto, HardDoorManagerVo hardDoorDetail);
/**
* 上架开门
@@ -17,6 +17,11 @@ public interface HardDoorManagerService extends IService<HardDoorManagerEntity>
*/
HardDoorManagerVo getByHardId(Long hardId);
/**
* 根据硬件设备编号查询详情
*/
HardDoorManagerVo getByDeviceCode(String deviceCode);
/**
* 绑定设备
*/
@@ -10,4 +10,6 @@ import java.util.List;
public interface HardSpuJoinService extends IService<HardSpuJoinEntity> {
List<HardSpuJoinVo> scopeList(HardSpuJoinDto dto);
List<HardSpuJoinVo> getSpuList(Long hardDoorId, Integer cabinetNo);
}
@@ -11,19 +11,24 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum;
import com.bsd.pjcloud.hard.api.constant.HardDoorFlowEnum;
import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
import com.bsd.pjcloud.hard.api.utils.HardUtil;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.mapper.HardAuthMapper;
import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper;
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
import com.bsd.pjcloud.hard.service.HardAuthService;
import com.bsd.pjcloud.hard.service.HardDoorFlowService;
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -44,6 +49,7 @@ import java.util.List;
public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEntity> implements HardAuthService {
private final HardDoorManagerService hardDoorManagerService;
private final HardDoorFlowService hardDoorFlowService;
private final HardManagerMapper hardManagerMapper;
private final HardDoorManagerMapper hardDoorManagerMapper;
@@ -57,23 +63,59 @@ public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEnt
return pageList;
}
/**
* app获取智能柜授权信息
*/
@Override
public HardGetAuthAppVo appGetAuthHardDoor(HardGetAuthAppDto dto) {
// 检验智能柜
HardDoorManagerVo hardDoorDetail = hardDoorManagerService.checkDeviceAndCabinet(dto.getDoorHardId(), dto.getCabinetNo());
if (ObjectUtil.isEmpty(hardDoorDetail)) {
throw new RuntimeException("获取智能柜授权信息错误");
}
HardAuthEntity insetObj = HardAuthEntity.builder()
.userId(dto.getUserId())
.hardId(hardDoorDetail.getHardId())
.cabinetNo(dto.getCabinetNo())
.authType(HardAuthTypeEnum.HARD_DDOR_AUTH.getType())
.authStatus(YesNoEnum.NO.getCode())
.isDone(YesNoEnum.NO.getCode())
.build();
baseMapper.insert(insetObj);
HardGetAuthAppVo auhtVo = new HardGetAuthAppVo();
auhtVo.setAuthDesc(getHardDoorAuthDesc());
auhtVo.setAuthId(insetObj.getId());
return auhtVo;
}
/**
* app智能柜授权
*/
@Override
public Long appAuthHardDoor(HardAuthAppDto dto) {
// 检验智能柜
HardDoorManagerVo hardDoorDetail = hardDoorManagerService.checkDeviceAndCabinet(dto.getDoorHardId(), dto.getCabinetNo());
HardAuthEntity insetObj = HardAuthEntity.builder()
.userId(dto.getUserId())
.hardId(hardDoorDetail.getHardId())
.authType(HardAuthTypeEnum.HARD_DDOR_AUTH.getType())
.authStatus(dto.getAuthStatus())
// 查询授权信息
HardAuthEntity authEntity = baseMapper.selectById(dto.getAuthId());
if (ObjectUtil.isEmpty(authEntity)) throw new RuntimeException("授权信息不存在");
// 查询设备信息
HardDoorManagerVo hardDoorDetail = hardDoorManagerService.getByHardId(authEntity.getHardId());
if (ObjectUtil.isEmpty(hardDoorDetail)) throw new RuntimeException("授权信息不存在");
HardAuthEntity updateObj = HardAuthEntity.builder()
.id(dto.getAuthId())
.authType(dto.getAuthStatus())
.authTime(LocalDateTime.now())
.isDone(YesNoEnum.NO.getCode())
.build();
baseMapper.insert(insetObj);
return insetObj.getId();
baseMapper.updateById(updateObj);
if (ObjectUtil.equals(dto.getAuthStatus(), YesNoEnum.YES.getCode())) {
// 开门
HardDoorFlowOpenDto openDoorDto = new HardDoorFlowOpenDto();
openDoorDto.setHardDoorId(hardDoorDetail.getId());
openDoorDto.setCabinetNo(authEntity.getCabinetNo());
openDoorDto.setFlowType(HardDoorFlowEnum.PAY_OPEN);
openDoorDto.setOpenType(HardDoorOpenTypeEnum.RECORD_VIDEO);
openDoorDto.setUserId(dto.getUserId());
hardDoorFlowService.openDoorPay(openDoorDto, hardDoorDetail);
}
return dto.getAuthId();
}
private void disposeList(List<HardAuthVo> list, HardAuthDto dto) {
@@ -97,4 +139,26 @@ public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEnt
}
}
}
/**
* 获取智能柜授权描述
*/
private String getHardDoorAuthDesc() {
StringBuilder strBuilder = new StringBuilder();
strBuilder.append("授权告示\n")
.append("欢迎使用我们的智能柜设备!为确保您可以顺利使用免密支付的先拿后付功能,请您仔细阅读以下授权条款:\n")
.append("\n授权使用\n")
.append("我们需要您的授权,以允许您通过智能柜进行商品的获取和自动结算。您同意在使用本设备时遵守以下条款。\n")
.append("\n使用流程\n")
.append("请您首先同意本授权,并启动开门程序。\n")
.append("设备开门后,您可以选择并取走所需商品。\n")
.append("关闭柜门后,系统将自动进行结算,费用将通过您事先绑定的支付方式扣除。\n")
.append("\n免密支付\n")
.append("您的支付信息将被安全存储,结算时无需再次输入密码。请确认您所使用的支付方式已正确绑定至您的账户。\n")
.append("\n隐私保护\n")
.append("您的个人信息和支付信息将受到严格保护,并仅用于本次交易及相关服务。\n")
.append("\n同意条款\n")
.append("使用本智能柜设备即视为您已阅读并同意以上所有条款。请谨慎使用,确保遵守使用规定。");
return strBuilder.toString();
}
}
@@ -7,17 +7,27 @@ import cn.hutool.extra.spring.SpringUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.api.vo.spu.HardSpuJoinVo;
import com.bsd.pjcloud.hard.mapper.HardAuthMapper;
import com.bsd.pjcloud.hard.mapper.HardDoorFlowMapper;
import com.bsd.pjcloud.hard.service.HardDoorCabinetService;
import com.bsd.pjcloud.hard.service.HardDoorFlowService;
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import com.bsd.pjcloud.hard.service.HardSpuJoinService;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdDoorApiService;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdKsService;
import com.bsd.pjcloud.thirdparty.dto.door.*;
import com.bsd.pjcloud.thirdparty.dto.ks.KsRecognitionDto;
import com.bsd.pjcloud.thirdparty.dto.ks.KsSkuSubmitDto;
import com.bsd.pjcloud.thirdparty.vo.door.DoorOpenVo;
import com.bsd.pjcloud.thirdparty.vo.door.DoorStatusVo;
import com.bsd.pjcloud.thirdparty.vo.ks.KsRecognitionVo;
import com.bsd.pjcloud.thirdparty.vo.ks.KsSkuSubmitVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -25,7 +35,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 智能柜流程
@@ -39,8 +52,13 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
private static final String TAG = "智能柜流程";
private final HardDoorManagerService hardDoorManagerService;
private final HardDoorCabinetService hardDoorCabinetService;
private final HardSpuJoinService hardSpuJoinService;
private final HardAuthMapper hardAuthMapper;
private final RemoterThirdDoorApiService thirdDoorApiService;
private final RemoterThirdKsService thirdKsService;
/**
* 开门
@@ -64,8 +82,6 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
// 是否开门成功
updateObj.setIsOpen(YesNoEnum.YES.getCode());
baseMapper.updateById(updateObj);
// 刷新状态
hardDoorManagerService.refresh(hardDoorVo.getDeviceCode());
}
@@ -103,8 +119,29 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
* 购买开门
*/
@Override
public void openDoorPay(HardDoorFlowOpenDto dto) {
public void openDoorPay(HardDoorFlowOpenDto dto, HardDoorManagerVo hardDoorDetail) {
if (ObjectUtil.isNotEmpty(dto.getHardDoorFlowId()) || ObjectUtil.isEmpty(hardDoorDetail)) {
return;
}
// 查询货柜是否配置spu信息
List<HardSpuJoinVo> spuList = hardSpuJoinService.getSpuList(hardDoorDetail.getId(), dto.getCabinetNo());
if (ObjectUtil.isEmpty(spuList) || spuList.isEmpty()) throw new RuntimeException("货柜商品信息为空,请上架");
DoorOpenDto openDto = new DoorOpenDto();
openDto.setDeviceCode(hardDoorDetail.getDeviceCode());
openDto.setCabinetNo(dto.getCabinetNo());
openDto.setOutOpenNo(String.valueOf(dto.getHardDoorFlowId()));
DoorOpenVo openVo = thirdDoorApiService.open(openDto).getData();
if (ObjectUtil.isEmpty(openVo) || !openVo.isSuccess()) {
throw new RuntimeException("开门失败");
}
HardDoorFlowEntity updateObj = HardDoorFlowEntity.builder()
.id(dto.getHardDoorFlowId())
.hardDoorId(dto.getHardDoorId())
.cabinetNo(dto.getCabinetNo())
.requestOpenDto(JSONUtil.toJsonStr(dto))
.requestOpenVo(JSONUtil.toJsonStr(openVo))
.build();
baseMapper.updateById(updateObj);
}
/**
@@ -156,15 +193,41 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
log.info("|{}|disposeVideoCallback 流程不存在dto|{}|", TAG, JSONUtil.toJsonStr(dto));
return;
}
// 提交视频
List<String> videoList = dto.getVideoList().stream().map(DoorVideoCallbackDto.Video::getVideoUrl).toList();
// 提交柜子商品信息
List<HardSpuJoinVo> spuList = hardSpuJoinService.getSpuList(flowDetail.getHardDoorId(), flowDetail.getCabinetNo());
Map<String, Object> ksMap = new HashMap<>();
List<Map<String, Object>> ksSpuMap = new ArrayList<>();
for (HardSpuJoinVo v : spuList) {
if (ObjectUtil.isEmpty(v.getSpuDetail())) continue;
Map<String, Object> map = new HashMap<>();
map.put("sku_id", v.getSpuDetail().getKsSkuId());
map.put("floor_num", v.getHardDoorNumber());
ksSpuMap.add(map);
}
ksMap.put("origin_time", System.currentTimeMillis());
ksMap.put("sku_scope", ksSpuMap);
// 更新流程
HardDoorFlowEntity updateObj = HardDoorFlowEntity.builder()
.id(flowDetail.getId())
.videoCallbackVo(JSONUtil.toJsonStr(dto))
.videoCallbackTime(LocalDateTime.now())
.build();
baseMapper.updateById(updateObj);
HardDoorFlowEntity vodeoUpdateObj = HardDoorFlowEntity.builder().id(flowDetail.getId()).videoCallbackVo(JSONUtil.toJsonStr(dto)).videoCallbackTime(LocalDateTime.now()).build();
baseMapper.updateById(vodeoUpdateObj);
// 提交识别
KsRecognitionDto ksRecognitionDto = new KsRecognitionDto();
ksRecognitionDto.setRecog_id(String.valueOf(flowDetail.getId()));
ksRecognitionDto.setExtra_params(JSONUtil.toJsonStr(ksMap));
ksRecognitionDto.setResource_type("1");
ksRecognitionDto.setResource_urls(JSONUtil.toJsonStr(videoList));
// third服务生成
ksRecognitionDto.setNotify_url("");
ksRecognitionDto.setSub_mch_id(String.valueOf(flowDetail.getOrderId()));
KsRecognitionVo ksRecognitionVo = thirdKsService.recognition(ksRecognitionDto).getData();
if (ObjectUtil.isEmpty(ksRecognitionVo) || !ksRecognitionVo.isSuccess()) {
log.info("|{}|disposeVideoCallback 提交识别错误dto|{}|vo|{}|", TAG, JSONUtil.toJsonStr(ksRecognitionDto), JSONUtil.toJsonStr(ksRecognitionVo));
return;
}
// 更新流程
HardDoorFlowEntity ksSubmitUpdateObj = HardDoorFlowEntity.builder().id(flowDetail.getId()).skuSubmitDto(JSONUtil.toJsonStr(ksRecognitionDto)).skuSubmitVo(JSONUtil.toJsonStr(ksRecognitionVo)).skuSubmitTime(LocalDateTime.now()).build();
baseMapper.updateById(ksSubmitUpdateObj);
}
/**
@@ -173,7 +236,18 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
@Override
public void disposeStatusCallback(DoorStatusCallbackDto dto) {
if (ObjectUtil.isEmpty(dto)) {
log.error("|{}|disposeStatusCallback 参数错误dto|{}|", TAG, JSONUtil.toJsonStr(dto));
return;
}
HardDoorManagerVo hardDoorDetail = hardDoorManagerService.getByDeviceCode(dto.getDeviceCode());
if (ObjectUtil.isEmpty(hardDoorDetail)) {
log.error("|{}|disposeStatusCallback 设备不存在dto|{}|", TAG, JSONUtil.toJsonStr(dto));
return;
}
try {
hardDoorCabinetService.saveOrUpdate(hardDoorDetail.getId(), dto.getCabinetList());
} catch (Exception e) {
log.error("|{}|disposeStatusCallback 更新柜子状态失败dto|{}|", TAG, JSONUtil.toJsonStr(dto), e);
}
}
@@ -1,5 +1,6 @@
package com.bsd.pjcloud.hard.service.impl.manager;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -60,6 +61,22 @@ public class HardDoorManagerServiceImpl extends ServiceImpl<HardDoorManagerMappe
return hardDoor;
}
@Override
public HardDoorManagerVo getByDeviceCode(String deviceCode) {
HardDoorManagerEntity hardDoor = baseMapper.selectOne(new LambdaQueryWrapper<HardDoorManagerEntity>()
.eq(HardDoorManagerEntity::getDeviceCode, deviceCode)
);
if (ObjectUtil.isEmpty(hardDoor)) return null;
HardDoorManagerVo hardDoorVo = BeanUtil.toBean(hardDoor, HardDoorManagerVo.class);
if (ObjectUtil.isNotEmpty(hardDoorVo)) {
List<HardDoorCabinetEntity> cabinetList = hardDoorCabinetService.getListByHardDoorId(hardDoor.getId());
if (ObjectUtil.isNotEmpty(cabinetList)) {
hardDoorVo.setCabinetList(cabinetList);
}
}
return hardDoorVo;
}
/**
* 绑定设备
*/
@@ -33,9 +33,10 @@ public class HardSpuJoinServiceImpl extends ServiceImpl<HardSpuJoinMapper, HardS
@Override
public List<HardSpuJoinVo> scopeList(HardSpuJoinDto dto) {
List<HardSpuJoinEntity> list = baseMapper.selectList(new LambdaQueryWrapper<HardSpuJoinEntity>()
.eq(HardSpuJoinEntity::getHardDoorNumber, dto.getHardDoorNumber())
.eq(HardSpuJoinEntity::getHardDoorId, dto.getHardDoorId())
.eq(HardSpuJoinEntity::getCabinetNo, dto.getCabinetNo())
.eq(ObjectUtil.isNotEmpty(dto.getHardDoorNumber()), HardSpuJoinEntity::getHardDoorNumber, dto.getHardDoorNumber())
.eq(ObjectUtil.isNotEmpty(dto.getHardDoorId()), HardSpuJoinEntity::getHardDoorId, dto.getHardDoorId())
.eq(ObjectUtil.isNotEmpty(dto.getCabinetNo()), HardSpuJoinEntity::getCabinetNo, dto.getCabinetNo())
.isNotNull(ObjectUtil.isNotEmpty(dto.getIsSpu()) && dto.getIsSpu(), HardSpuJoinEntity::getSpuId)
.orderByDesc(HardSpuJoinEntity::getSpuId)
);
if (ObjectUtil.isEmpty(list)) return List.of();
@@ -51,4 +52,12 @@ public class HardSpuJoinServiceImpl extends ServiceImpl<HardSpuJoinMapper, HardS
}
return joinList;
}
@Override
public List<HardSpuJoinVo> getSpuList(Long hardDoorId, Integer cabinetNo) {
HardSpuJoinDto queryDto = new HardSpuJoinDto();
queryDto.setHardDoorId(hardDoorId);
queryDto.setCabinetNo(String.valueOf(cabinetNo));
return scopeList(queryDto);
}
}
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
import lombok.Data;
@Data
public class KsRecognitionVo {
public class KsRecognitionVo extends KsBaseInnerVo {
/**
* 识别任务唯一ID,用于结果获取、重新发起售后识别
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
import lombok.Data;
@Data
public class KsSkuSubmitVo {
public class KsSkuSubmitVo extends KsBaseInnerVo {
private String ks_sku_id;