From 61fe5a6b72558b9a8b078b151b4b2e18f8f41ec2 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 10 Apr 2025 20:22:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=97=B7=E4=B8=96=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thirdparty/dto/ks/KsBarcodeLikeDto.java | 8 +- .../thirdparty/vo/door/DoorBaseVo.java | 2 +- .../thirdparty/config/KsDiscernConfig.java | 3 +- .../controller/ks/ThirdKsApiController.java | 72 +++++++++++++- .../thirdparty/service/ThirdKsApiService.java | 53 +++++++++- .../impl/door/ThirdDoorApiServiceImpl.java | 98 +++++++++---------- .../impl/ks/ThirdKsApiServiceImpl.java | 96 +++++++++++++++++- .../thirdparty/utils/door/api/DoorApi.java | 2 + .../thirdparty/utils/ks/api/KsApi.java | 50 +++++++--- .../src/main/resources/application.yml | 4 +- 10 files changed, 309 insertions(+), 79 deletions(-) diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/ks/KsBarcodeLikeDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/ks/KsBarcodeLikeDto.java index 351c7c281..f40f0fe78 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/ks/KsBarcodeLikeDto.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/ks/KsBarcodeLikeDto.java @@ -13,21 +13,21 @@ public class KsBarcodeLikeDto { /** * 是否只查询标准库(默认false) */ - private Boolean only_standard; + private Boolean only_standard = false; /** * 是否只查询非集合SKU(默认false) */ - private Boolean only_single; + private Boolean only_single = false; /** * 当前页码,正整数,默认1 */ - private Integer page_num; + private Integer page_num = 1; /** * 分页大小,正整数,默认10,最大50 */ - private Integer page_size; + private Integer page_size = 50; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java index 105c6f8ec..00f44e59a 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/vo/door/DoorBaseVo.java @@ -12,7 +12,7 @@ public class DoorBaseVo { private String message; - private Object data; + private String data; public boolean isSuccess() { return ObjectUtil.equal(code, DoorBaseVo.successCode); diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/KsDiscernConfig.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/KsDiscernConfig.java index b3915ee78..5a5e31431 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/KsDiscernConfig.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/KsDiscernConfig.java @@ -11,6 +11,7 @@ public class KsDiscernConfig { private String baseUrl; - private String appId; + private String accessKey; + private String secretKey; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java index 89eb2fe8e..b89dd0f33 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/ks/ThirdKsApiController.java @@ -3,17 +3,16 @@ package com.bsd.pjcloud.thirdparty.controller.ks; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto; +import com.bsd.pjcloud.thirdparty.dto.ks.*; import com.bsd.pjcloud.thirdparty.service.ThirdKsApiService; import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo; +import com.bsd.pjcloud.thirdparty.vo.ks.*; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -28,10 +27,73 @@ public class ThirdKsApiController { @Inner @Operation(summary = "常规SKU提交审核") @PostMapping("/sku-submit") - public R skuSubmit(@RequestBody DoorRegisterDto dto) { + public R skuSubmit(@RequestBody KsSkuSubmitDto dto) { return R.ok(thirdKsApiService.skuSubmit(dto)); } + @Inner + @Operation(summary = "集合SKU提交审核(未公开)") + @PostMapping("/sku-submit-collection") + public R skuSubmitCollection(@RequestBody KsSkuSubmitCollectionDto dto) { + return R.ok(thirdKsApiService.skuSubmitCollection(dto)); + } + + @Inner + @Operation(summary = "SKU审核结果主动获取") + @PostMapping("/sku-result") + public R skuResult(@RequestBody KsSkuResultDto dto) { + return R.ok(thirdKsApiService.skuResult(dto)); + } + + @Inner + @Operation(summary = "SKU审核结果主动获取") + @PostMapping("/sku-edit") + public R skuEdit(@RequestBody KsSkuEditDto dto) { + return R.ok(thirdKsApiService.skuEdit(dto)); + } + + @Inner + @Operation(summary = "SKU审核结果主动获取") + @PostMapping("/sku-delete") + public R skuDelete(@RequestBody KsSkuDeleteDto dto) { + return R.ok(thirdKsApiService.skuDelete(dto)); + } + + @Inner + @Operation(summary = "根据69码查询标准库和私有库商品信息") + @PostMapping("/barcode-sku") + public R barcodeSku(@RequestBody KsBarcodeSkuDto dto) { + return R.ok(thirdKsApiService.barcodeSku(dto)); + } + + @Inner + @Operation(summary = "根据ks_sku_id查询标准库和私有库商品信息") + @PostMapping("/barcode-sku-by-id") + public R barcodeSkuById(@RequestParam Long ksSkuId) { + return R.ok(thirdKsApiService.barcodeSkuId(ksSkuId)); + } + + @Inner + @Operation(summary = "模糊查询标准库和私有库商品信息") + @PostMapping("/barcode-sku-like") + public R barcodeSkuLike(@RequestBody KsBarcodeLikeDto dto) { + return R.ok(thirdKsApiService.barcodeSkuLike(dto)); + } + + @Inner + @Operation(summary = "SKU提交识别") + @PostMapping("/recognition") + public R recognition(@RequestBody KsRecognitionDto dto) { + return R.ok(thirdKsApiService.recognition(dto)); + } + + @Inner + @Operation(summary = "SKU识别结果主动获取") + @PostMapping("/recognition_result") + public R recognitionResult(@RequestBody KsRecognitionResultDto dto) { + return R.ok(thirdKsApiService.recognitionResult(dto)); + } + /* ************************************* end 远程调用 end ************************************* */ diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdKsApiService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdKsApiService.java index 9a01d20f7..a4e6fb455 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdKsApiService.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdKsApiService.java @@ -2,8 +2,59 @@ package com.bsd.pjcloud.thirdparty.service; import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto; +import com.bsd.pjcloud.thirdparty.dto.ks.*; import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo; +import com.bsd.pjcloud.thirdparty.vo.ks.*; public interface ThirdKsApiService { - DoorRegisterVo skuSubmit(DoorRegisterDto dto); + + /** + * 常规SKU提交审核 + */ + KsSkuSubmitVo skuSubmit(KsSkuSubmitDto dto); + + /** + * 集合SKU提交审核(未公开) + */ + KsSkuSubmitCollectionVo skuSubmitCollection(KsSkuSubmitCollectionDto dto); + + /** + * SKU审核结果主动获取 + */ + KsSkuResultVo skuResult(KsSkuResultDto dto); + + /** + * SKU审核结果主动获取 + */ + KsSkuEditVo skuEdit(KsSkuEditDto dto); + + /** + * SKU审核结果主动获取 + */ + KsSkuDeleteVo skuDelete(KsSkuDeleteDto dto); + + /** + * 根据69码查询标准库和私有库商品信息 + */ + KsBarcodeSkuVo barcodeSku(KsBarcodeSkuDto dto); + + /** + * 根据ks_sku_id查询标准库和私有库商品信息 + */ + KsBarcodeSkuVo barcodeSkuId(Long ksSkuId); + + /** + * 模糊查询标准库和私有库商品信息 + */ + KsBarcodeLikeVo barcodeSkuLike(KsBarcodeLikeDto dto); + + /** + * SKU提交识别 + */ + KsRecognitionVo recognition(KsRecognitionDto dto); + + /** + * SKU识别结果主动获取 + */ + KsRecognitionResultVo recognitionResult(KsRecognitionResultDto dto); } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java index dc4daae51..62c334363 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java @@ -37,23 +37,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorRegisterVo register(DoorRegisterDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.REGISTER.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.REGISTER.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorRegisterVo errorVo = new DoorRegisterVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorRegisterVo.class); } catch (Exception e) { String error = String.format("|%s||register|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -62,7 +62,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorRegisterVo.class); } /** @@ -71,23 +71,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorBindVo bind(DoorBindDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.BIND.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.BIND.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorBindVo errorVo = new DoorBindVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorBindVo.class); } catch (Exception e) { String error = String.format("|%s||bind|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -96,7 +96,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorBindVo.class); } /** @@ -105,23 +105,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorStatusVo status(DoorStatusDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.STATUS.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.STATUS.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorStatusVo errorVo = new DoorStatusVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorStatusVo.class); } catch (Exception e) { String error = String.format("|%s||status|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -130,7 +130,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorStatusVo.class); } /** @@ -139,23 +139,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorRestartVo restart(DoorRestartDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.RESTART.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.RESTART.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorRestartVo errorVo = new DoorRestartVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorRestartVo.class); } catch (Exception e) { String error = String.format("|%s||restart|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -164,7 +164,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorRestartVo.class); } /** @@ -173,23 +173,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorVolumeVo volume(DoorVolumeDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.VOLUME.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.VOLUME.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorVolumeVo errorVo = new DoorVolumeVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorVolumeVo.class); } catch (Exception e) { String error = String.format("|%s||volume|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -198,7 +198,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorVolumeVo.class); } /** @@ -207,23 +207,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorOpenVo open(DoorOpenDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.OPEN.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.OPEN.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorOpenVo errorVo = new DoorOpenVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorOpenVo.class); } catch (Exception e) { String error = String.format("|%s||volume|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -232,7 +232,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorOpenVo.class); } /** @@ -241,23 +241,23 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { @Override public DoorVideoVo video(DoorVideoDto dto) { long startTime = System.currentTimeMillis(); - DoorApi.Api registerApi = DoorApi.VIDEO.setBaseUrl(doorConfig.getBaseUrl()); - ThirdDoorLogEntity logEntity = registerApi.getInitLogEntity(); + DoorBaseVo doorBaseVo = new DoorBaseVo(); + DoorApi.Api api = DoorApi.VIDEO.setBaseUrl(doorConfig.getBaseUrl()); + ThirdDoorLogEntity logEntity = api.getInitLogEntity(); logEntity.setReq(JSONUtil.toJsonStr(dto)); try { String body = JSONUtil.toJsonStr(dto); - String res = registerApi.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); - DoorBaseVo doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); + doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, registerApi, body); + String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); log.error(errorLog); DoorVideoVo errorVo = new DoorVideoVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } - return JSONUtil.toBean(res, DoorVideoVo.class); } catch (Exception e) { String error = String.format("|%s||volume|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); log.error(error); @@ -266,7 +266,7 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); doorLogService.save(logEntity); } - return null; + return JSONUtil.toBean(doorBaseVo.getData(), DoorVideoVo.class); } /** diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ks/ThirdKsApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ks/ThirdKsApiServiceImpl.java index 438c5040b..c1960b302 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ks/ThirdKsApiServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/ks/ThirdKsApiServiceImpl.java @@ -1,8 +1,14 @@ package com.bsd.pjcloud.thirdparty.service.impl.ks; +import cn.hutool.json.JSONUtil; +import com.bsd.pjcloud.thirdparty.config.KsDiscernConfig; import com.bsd.pjcloud.thirdparty.dto.door.DoorRegisterDto; +import com.bsd.pjcloud.thirdparty.dto.ks.*; import com.bsd.pjcloud.thirdparty.service.ThirdKsApiService; +import com.bsd.pjcloud.thirdparty.utils.door.api.DoorApi; +import com.bsd.pjcloud.thirdparty.utils.ks.api.KsApi; import com.bsd.pjcloud.thirdparty.vo.door.DoorRegisterVo; +import com.bsd.pjcloud.thirdparty.vo.ks.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -14,8 +20,96 @@ import org.springframework.validation.annotation.Validated; @Slf4j @RequiredArgsConstructor public class ThirdKsApiServiceImpl implements ThirdKsApiService { + + private final KsDiscernConfig ksDiscernConfig; + + /** + * 常规SKU提交审核 + */ @Override - public DoorRegisterVo skuSubmit(DoorRegisterDto dto) { + public KsSkuSubmitVo skuSubmit(KsSkuSubmitDto dto) { + return null; + } + + /** + * 集合SKU提交审核(未公开) + */ + @Override + public KsSkuSubmitCollectionVo skuSubmitCollection(KsSkuSubmitCollectionDto dto) { + return null; + } + + /** + * SKU审核结果主动获取 + */ + @Override + public KsSkuResultVo skuResult(KsSkuResultDto dto) { + return null; + } + + /** + * SKU审核结果主动获取 + */ + @Override + public KsSkuEditVo skuEdit(KsSkuEditDto dto) { + return null; + } + + /** + * SKU审核结果主动获取 + */ + @Override + public KsSkuDeleteVo skuDelete(KsSkuDeleteDto dto) { + return null; + } + + /** + * 根据69码查询标准库和私有库商品信息 + */ + @Override + public KsBarcodeSkuVo barcodeSku(KsBarcodeSkuDto dto) { + return null; + } + + /** + * 根据ks_sku_id查询标准库和私有库商品信息 + */ + @Override + public KsBarcodeSkuVo barcodeSkuId(Long ksSkuId) { + return null; + } + + /** + * 模糊查询标准库和私有库商品信息 + */ + @Override + public KsBarcodeLikeVo barcodeSkuLike(KsBarcodeLikeDto dto) { + long startTime = System.currentTimeMillis(); + KsApi.Api api = KsApi.BARCODE_SKU_LIKE.setBaseUrl(ksDiscernConfig.getBaseUrl()); + try { + String body = JSONUtil.toJsonStr(dto); + String res = api.getHttpRequest().body(body).execute().body(); + } catch (Exception e) { + + } finally { + + } + return null; + } + + /** + * SKU提交识别 + */ + @Override + public KsRecognitionVo recognition(KsRecognitionDto dto) { + return null; + } + + /** + * SKU识别结果主动获取 + */ + @Override + public KsRecognitionResultVo recognitionResult(KsRecognitionResultDto dto) { return null; } } 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 57bb5772c..ca1f143d3 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 @@ -11,6 +11,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Map; + public class DoorApi { // 设备注册 diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/ks/api/KsApi.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/ks/api/KsApi.java index 1587f8d52..be5291508 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/ks/api/KsApi.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/ks/api/KsApi.java @@ -6,43 +6,48 @@ import cn.hutool.http.HttpRequest; 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 com.bsd.pjcloud.thirdparty.utils.door.api.DoorApi; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +@Slf4j public class KsApi { // 常规SKU提交审核 - public static final DoorApi.Api SKU_SUBMIT = DoorApi.Api.builder().url("/openapi/sc/v1/sku").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); + public static final KsApi.Api SKU_SUBMIT = KsApi.Api.builder().url("/openapi/sc/v1/sku").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); // 集合SKU提交审核(未公开) - public static final DoorApi.Api SKU_SUBMIT_COLLECTION = DoorApi.Api.builder().url("/openapi/sc/v1/sku/collection").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); + public static final KsApi.Api SKU_SUBMIT_COLLECTION = KsApi.Api.builder().url("/openapi/sc/v1/sku/collection").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); // SKU审核结果主动获取 - public static final DoorApi.Api SKU_RESULT = DoorApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); + public static final KsApi.Api SKU_RESULT = KsApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); // 常规SKU修改 - public static final DoorApi.Api SKU_EDIT = DoorApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("patch").contentType("application/json").build(); + public static final KsApi.Api SKU_EDIT = KsApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("patch").contentType("application/json").build(); // 常规SKU修改 - public static final DoorApi.Api SKU_DELETE = DoorApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("delete").contentType("application/json").build(); + public static final KsApi.Api SKU_DELETE = KsApi.Api.builder().url("/openapi/sc/v1/sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("delete").contentType("application/json").build(); // 根据69码查询标准库和私有库商品信息 - public static final DoorApi.Api BARCODE_SKU = DoorApi.Api.builder().url("/openapi/sc/v1/sku/all_sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); + public static final KsApi.Api BARCODE_SKU = KsApi.Api.builder().url("/openapi/sc/v1/sku/all_sku/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); // 根据ks_sku_id查询标准库和私有库商品信息 - public static final DoorApi.Api BARCODE_SKU_BY_IDS = DoorApi.Api.builder().url("/openapi/sc/v1/sku/skus/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); + public static final KsApi.Api BARCODE_SKU_BY_ID = KsApi.Api.builder().url("/openapi/sc/v1/sku/skus/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); // 模糊查询标准库和私有库商品信息 - public static final DoorApi.Api BARCODE_SKU_LIKE = DoorApi.Api.builder().url("/openapi/sc/v1/sku/sku_list/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); + public static final KsApi.Api BARCODE_SKU_LIKE = KsApi.Api.builder().url("/openapi/sc/v1/sku/sku_list/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("get").contentType("application/json").build(); // SKU提交识别 - public static final DoorApi.Api RECOGNITION = DoorApi.Api.builder().url("/openapi/sc/v1/recognition/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); + public static final KsApi.Api RECOGNITION = KsApi.Api.builder().url("/openapi/sc/v1/recognition/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); // SKU识别结果主动获取 - public static final DoorApi.Api RECOGNITION_RESULT = DoorApi.Api.builder().url("/openapi/sc/v1/recognition/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); + public static final KsApi.Api RECOGNITION_RESULT = KsApi.Api.builder().url("/openapi/sc/v1/recognition/%s").bizType(ThordDoorApiTypeEnum.REGISTER).method("post").contentType("application/json").build(); @Data @Builder @@ -53,6 +58,8 @@ public class KsApi { private String url; + private Map params; + private String method; private String contentType; @@ -66,15 +73,28 @@ public class KsApi { return this; } + public KsApi.Api setParams(Map params) { + this.params = params; + return this; + } + public HttpRequest getHttpRequest() { + String fullPatch = baseUrl + url; + if (ObjectUtil.isNotEmpty(params)) { + StringBuilder query = new StringBuilder(); + for (Map.Entry entry : params.entrySet()) { + query.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8)).append("=").append(URLEncoder.encode(String.valueOf(entry.getValue()), StandardCharsets.UTF_8)); + } + fullPatch = fullPatch + "?" + query; + } if (ObjectUtil.equals(method, "post")) { - return HttpRequest.post(baseUrl + url).contentType(contentType); + return HttpRequest.post(fullPatch).contentType(contentType); } else if (ObjectUtil.equals(method, "get")) { - return HttpRequest.get(baseUrl + url).contentType(contentType); + return HttpRequest.get(fullPatch).contentType(contentType); } else if (ObjectUtil.equals(method, "patch")) { - return HttpRequest.patch(baseUrl + url).contentType(contentType); + return HttpRequest.patch(fullPatch).contentType(contentType); } else if (ObjectUtil.equals(method, "delete")) { - return HttpRequest.delete(baseUrl + url).contentType(contentType); + return HttpRequest.delete(fullPatch).contentType(contentType); } else { return null; } diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml index 0afb73ab2..0dca5d900 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml @@ -81,8 +81,8 @@ door: # 旷世识别 ks-discern: base-url: https://gwycport.zj.gov.cn - app-id: - #app + access-key: ed5A923eF0e941A1968eGTpF + secret-key: Ex3X0kgoc94sBOtivjWm5Vz9AyZTOUpl