feat:开门流程
This commit is contained in:
1 parent
a1d3dbc7f2
commit
e6fcd91d5c
19 files changed
+298
-40
No files matched your search
@@ -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 '是否完成',
|
||||
|
||||
+3
-9
@@ -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;
|
||||
|
||||
/**
|
||||
* 是否授权
|
||||
|
||||
+5
-1
@@ -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;
|
||||
|
||||
/**
|
||||
* 流程类型
|
||||
*/
|
||||
|
||||
+26
@@ -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;
|
||||
}
|
||||
+6
@@ -5,4 +5,10 @@ import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class HardSpuJoinDto extends HardSpuJoinEntity {
|
||||
|
||||
/**
|
||||
* 是否有商品
|
||||
*/
|
||||
private Boolean isSpu = false;
|
||||
|
||||
}
|
||||
+6
@@ -41,6 +41,12 @@ public class HardAuthEntity extends Model<HardAuthEntity> {
|
||||
@Schema(description = "硬件id")
|
||||
private Long hardId;
|
||||
|
||||
/**
|
||||
* 货柜编号
|
||||
*/
|
||||
@Schema(description = "货柜编号")
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* 授权类型
|
||||
*/
|
||||
|
||||
+12
@@ -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;
|
||||
|
||||
/**
|
||||
* 订单编号
|
||||
*/
|
||||
|
||||
+18
@@ -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;
|
||||
|
||||
}
|
||||
+10
@@ -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) {
|
||||
|
||||
+8
@@ -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智能柜授权
|
||||
*/
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ public interface HardDoorFlowService extends IService<HardDoorFlowEntity> {
|
||||
/**
|
||||
* 购买开门
|
||||
*/
|
||||
void openDoorPay(HardDoorFlowOpenDto dto);
|
||||
void openDoorPay(HardDoorFlowOpenDto dto, HardDoorManagerVo hardDoorDetail);
|
||||
|
||||
/**
|
||||
* 上架开门
|
||||
|
||||
+5
@@ -17,6 +17,11 @@ public interface HardDoorManagerService extends IService<HardDoorManagerEntity>
|
||||
*/
|
||||
HardDoorManagerVo getByHardId(Long hardId);
|
||||
|
||||
/**
|
||||
* 根据硬件设备编号查询详情
|
||||
*/
|
||||
HardDoorManagerVo getByDeviceCode(String deviceCode);
|
||||
|
||||
/**
|
||||
* 绑定设备
|
||||
*/
|
||||
|
||||
+2
@@ -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);
|
||||
}
|
||||
+75
-11
@@ -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();
|
||||
}
|
||||
}
|
||||
+87
-13
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+17
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定设备
|
||||
*/
|
||||
|
||||
+12
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@ package com.bsd.pjcloud.thirdparty.vo.ks;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class KsRecognitionVo {
|
||||
public class KsRecognitionVo extends KsBaseInnerVo {
|
||||
|
||||
/**
|
||||
* 识别任务唯一ID,用于结果获取、重新发起售后识别
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
|
||||
Reference in new issue
Block a user