From 022f73dd9ee27b4fd4da78ab919f844bfd71934d Mon Sep 17 00:00:00 2001 From: dev <182542500@qq.com> Date: Fri, 28 Mar 2025 18:13:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .run/asinkj-auth.run.xml | 19 ++++- asinkj-api/asinkj-api-amz/pom.xml | 27 ++++++ .../asinkj/amz/api/RemoteFBADataService.java | 8 ++ asinkj-api/asinkj-api-bom/pom.xml | 6 ++ asinkj-api/pom.xml | 1 + asinkj-auth/Dockerfile | 1 + asinkj-biz/asinkj-amz/pom.xml | 5 ++ .../BizLogisticsOrderDetailController.java | 15 ++++ .../BizLogisticsQuoteController.java | 14 +++- .../controller/SysAmazonStoreController.java | 24 ++++++ .../asinkj/amz/domain/BizInquiryRequest.java | 5 ++ .../asinkj/amz/domain/BizLogisticsQuote.java | 4 + .../domain/bo/BizLogisticsOrderDetailBo.java | 2 + .../amz/domain/bo/SysAmazonStoreBo.java | 11 --- .../amz/domain/vo/BizInquiryRequestVo.java | 12 ++- .../domain/vo/BizLogisticsOrderDetailVo.java | 2 + .../amz/domain/vo/BizLogisticsOrderVo.java | 5 ++ .../amz/domain/vo/BizLogisticsQuoteVo.java | 12 ++- .../amz/dubbo/RemoteFBADataServiceImpl.java | 23 +++++ .../amz/mapper/BizLogisticsChannelMapper.java | 3 + .../amz/mapper/BizLogisticsQuoteMapper.java | 5 ++ .../IBizLogisticsOrderDetailService.java | 2 + .../service/IBizLogisticsQuoteService.java | 3 + .../amz/service/ISysAmazonStoreService.java | 4 + .../impl/BizInquiryRequestServiceImpl.java | 16 +--- .../BizLogisticsOrderDetailServiceImpl.java | 9 ++ .../impl/BizLogisticsOrderServiceImpl.java | 44 ++++++++-- .../impl/BizLogisticsQuoteServiceImpl.java | 20 +++++ .../impl/SysAmazonStoreServiceImpl.java | 84 ++++++++++++++++++- .../main/java/org/asinkj/utils/HttpUtil.java | 53 +++++++++++- .../mapper/amz/BizLogisticsChannelMapper.xml | 3 + .../mapper/amz/BizLogisticsQuoteMapper.xml | 21 +++++ .../asinkj-amz/src/test/java/testAmzData.java | 7 ++ asinkj-modules/asinkj-job/pom.xml | 5 ++ .../job/snailjob/AmzPullFBAJobExecutor.java | 55 ++++++++++++ 35 files changed, 485 insertions(+), 45 deletions(-) create mode 100644 asinkj-api/asinkj-api-amz/pom.xml create mode 100644 asinkj-api/asinkj-api-amz/src/main/java/org/asinkj/amz/api/RemoteFBADataService.java create mode 100644 asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java create mode 100644 asinkj-biz/asinkj-amz/src/test/java/testAmzData.java create mode 100644 asinkj-modules/asinkj-job/src/main/java/org/asinkj/job/snailjob/AmzPullFBAJobExecutor.java diff --git a/.run/asinkj-auth.run.xml b/.run/asinkj-auth.run.xml index 0c87a06..c4d1850 100644 --- a/.run/asinkj-auth.run.xml +++ b/.run/asinkj-auth.run.xml @@ -1,12 +1,23 @@ - + + - + + - + \ No newline at end of file diff --git a/asinkj-api/asinkj-api-amz/pom.xml b/asinkj-api/asinkj-api-amz/pom.xml new file mode 100644 index 0000000..35689df --- /dev/null +++ b/asinkj-api/asinkj-api-amz/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + org.asinkj + asinkj-api + ${revision} + + + asinkj-api-amz + + + asinkj-api-amz amz服务接口模块 + + + + + + + org.asinkj + asinkj-common-core + + + + diff --git a/asinkj-api/asinkj-api-amz/src/main/java/org/asinkj/amz/api/RemoteFBADataService.java b/asinkj-api/asinkj-api-amz/src/main/java/org/asinkj/amz/api/RemoteFBADataService.java new file mode 100644 index 0000000..9b40e3d --- /dev/null +++ b/asinkj-api/asinkj-api-amz/src/main/java/org/asinkj/amz/api/RemoteFBADataService.java @@ -0,0 +1,8 @@ +package org.asinkj.amz.api; + +import org.springframework.stereotype.Service; + +@Service +public interface RemoteFBADataService { + void pullAmzFbaDataToken(String startDate, String endDate) throws Exception; +} diff --git a/asinkj-api/asinkj-api-bom/pom.xml b/asinkj-api/asinkj-api-bom/pom.xml index e57253e..66a72ac 100644 --- a/asinkj-api/asinkj-api-bom/pom.xml +++ b/asinkj-api/asinkj-api-bom/pom.xml @@ -41,6 +41,12 @@ ${revision} + + org.asinkj + asinkj-api-amz + ${revision} + + diff --git a/asinkj-api/pom.xml b/asinkj-api/pom.xml index 144bf77..b33fea9 100644 --- a/asinkj-api/pom.xml +++ b/asinkj-api/pom.xml @@ -13,6 +13,7 @@ asinkj-api-system asinkj-api-resource asinkj-api-workflow + asinkj-api-amz asinkj-api diff --git a/asinkj-auth/Dockerfile b/asinkj-auth/Dockerfile index 73f9bf0..b92902b 100644 --- a/asinkj-auth/Dockerfile +++ b/asinkj-auth/Dockerfile @@ -18,6 +18,7 @@ EXPOSE ${SERVER_PORT} ADD ./target/asinkj-auth.jar ./app.jar ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \ + -Dspring.profiles.active='prod' \ # 动态读取环境变量 #-Dskywalking.agent.service_name=asinkj-auth \ #-javaagent:/asinkj/skywalking/agent/skywalking-agent.jar \ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ diff --git a/asinkj-biz/asinkj-amz/pom.xml b/asinkj-biz/asinkj-amz/pom.xml index 5ffcd9e..cfc1f4a 100644 --- a/asinkj-biz/asinkj-amz/pom.xml +++ b/asinkj-biz/asinkj-amz/pom.xml @@ -105,6 +105,11 @@ asinkj-api-resource + + org.asinkj + asinkj-api-amz + + com.squareup.okhttp3 okhttp diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderDetailController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderDetailController.java index 3077bda..2230fc7 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderDetailController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsOrderDetailController.java @@ -103,4 +103,19 @@ public class BizLogisticsOrderDetailController extends BaseController { @PathVariable Long[] ids) { return toAjax(bizLogisticsOrderDetailService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 新增物流订单明细(按箱子维度存储) + */ + @SaCheckPermission("amz:logisticsOrderDetail:edit") + @Log(title = "批量更新物流订单明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/updateList") + public R updateList(@Validated(AddGroup.class) @RequestBody List list) { + bizLogisticsOrderDetailService.updateList(list); + + return R.ok(); + } + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java index 39b16e7..b543400 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/BizLogisticsQuoteController.java @@ -1,6 +1,7 @@ package org.asinkj.amz.controller; import java.util.List; +import java.util.Map; import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; @@ -112,9 +113,9 @@ public class BizLogisticsQuoteController extends BaseController { @GetMapping("/today-quote-status") @RepeatSubmit() - public ResponseEntity> getTodayQuoteStatus() { + public R> getTodayQuoteStatus() { List statusList = bizLogisticsQuoteService.getTodayQuoteStatus(); - return ResponseEntity.ok(statusList); + return R.ok(statusList); } /** @@ -140,4 +141,13 @@ public class BizLogisticsQuoteController extends BaseController { @PathVariable Long[] ids) { return toAjax(bizLogisticsQuoteService.deleteWithValidByIds(List.of(ids), true)); } + + + @SaCheckPermission("amz:logisticsQuote:query") + @GetMapping("/report") + public R>> getInfo() { + List> maps = bizLogisticsQuoteService.generateReport(); + return R.ok(maps); + } + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java index fe7a4ea..3f93607 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/controller/SysAmazonStoreController.java @@ -134,4 +134,28 @@ public class SysAmazonStoreController extends BaseController { } return R.ok(); } + + @SaCheckPermission("amz:amazonStore:remove") + @Log(title = "亚马逊FBAtest", businessType = BusinessType.OTHER) + @GetMapping("/test") + public R testAmzFbaToken() { + try { + sysAmazonStoreService.testAmazonData(); + } catch (Exception e) { + throw new RuntimeException(e); + } + return R.ok(); + } + + @SaCheckPermission("amz:amazonStore:remove") + @Log(title = "亚马逊FBAtest", businessType = BusinessType.OTHER) + @GetMapping("/test2") + public R testAmzFbaToken2() { + try { + sysAmazonStoreService.testAmazonData2(); + } catch (Exception e) { + throw new RuntimeException(e); + } + return R.ok(); + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizInquiryRequest.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizInquiryRequest.java index a503b05..b02bbe1 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizInquiryRequest.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizInquiryRequest.java @@ -41,6 +41,11 @@ public class BizInquiryRequest extends TenantEntity { */ private Long requesterId; + /** + * 发起人名称 + */ + private String requesterName; + /** * 目标物流商ID列表(JSON数组格式,示例:[101,202,303]) */ diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizLogisticsQuote.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizLogisticsQuote.java index 09e64bf..24719f7 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizLogisticsQuote.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/BizLogisticsQuote.java @@ -33,6 +33,10 @@ public class BizLogisticsQuote extends TenantEntity { * 物流商用户ID(关联sys_user表) */ private Long userId; + /** + * 物流商 + */ + private String logisticsName; /** * 目的地(建议使用ISO国家代码如CN/US/GB) diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsOrderDetailBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsOrderDetailBo.java index 28fc376..2203a93 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsOrderDetailBo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/BizLogisticsOrderDetailBo.java @@ -142,12 +142,14 @@ public class BizLogisticsOrderDetailBo extends BaseEntity { * 预计签收日期(物流商提供的预估日期) */ @NotNull(message = "预计签收日期(物流商提供的预估日期)不能为空", groups = { AddGroup.class, EditGroup.class }) + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date estimatedDeliveryDate; /** * 实际签收日期(物流商回传的实际日期) */ @NotNull(message = "实际签收日期(物流商回传的实际日期)不能为空", groups = { AddGroup.class, EditGroup.class }) + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date actualDeliveryDate; /** diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/SysAmazonStoreBo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/SysAmazonStoreBo.java index 1c270d0..4335b26 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/SysAmazonStoreBo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/bo/SysAmazonStoreBo.java @@ -35,67 +35,56 @@ public class SysAmazonStoreBo extends BaseEntity { /** * 领星ERP店铺标识ID */ - @NotNull(message = "领星ERP店铺标识ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sid; /** * 站点ID */ - @NotNull(message = "站点ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long mid; /** * 店铺名称 */ - @NotBlank(message = "店铺名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String storeName; /** * 亚马逊店铺ID(如AZTOL**) */ - @NotBlank(message = "亚马逊店铺ID(如AZTOL**)不能为空", groups = { AddGroup.class, EditGroup.class }) private String sellerId; /** * 店铺账户名称 */ - @NotBlank(message = "店铺账户名称不能为空", groups = { AddGroup.class, EditGroup.class }) private String accountName; /** * 店铺账号ID */ - @NotNull(message = "店铺账号ID不能为空", groups = { AddGroup.class, EditGroup.class }) private Long sellerAccountId; /** * 站点简称(如NA/EU) */ - @NotBlank(message = "站点简称(如NA/EU)不能为空", groups = { AddGroup.class, EditGroup.class }) private String region; /** * 商城所在国家 */ - @NotBlank(message = "商城所在国家不能为空", groups = { AddGroup.class, EditGroup.class }) private String country; /** * 亚马逊市场ID */ - @NotBlank(message = "亚马逊市场ID不能为空", groups = { AddGroup.class, EditGroup.class }) private String marketplaceId; /** * 广告授权 0未授权 1已授权 */ - @NotNull(message = "广告授权 0未授权 1已授权不能为空", groups = { AddGroup.class, EditGroup.class }) private Long hasAdsSetting; /** * 店铺状态 0停用 1正常 2异常 3欠费 */ - @NotNull(message = "店铺状态 0停用 1正常 2异常 3欠费不能为空", groups = { AddGroup.class, EditGroup.class }) private Long status; diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizInquiryRequestVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizInquiryRequestVo.java index 60954b7..22ddf1b 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizInquiryRequestVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizInquiryRequestVo.java @@ -48,9 +48,15 @@ public class BizInquiryRequestVo implements Serializable { /** * 发起人id */ - @ExcelProperty(value = "发起人id") + private Long requesterId; + /** + * 发起人名称 + */ + @ExcelProperty(value = "发起人名称") + private String requesterName; + /** * 目标物流商ID列表(JSON数组格式,示例:[101,202,303]) */ @@ -83,14 +89,12 @@ public class BizInquiryRequestVo implements Serializable { * 报价截止时间(超过此时限自动关闭询价) */ @ExcelProperty(value = "报价截止时间", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "超=过此时限自动关闭询价") private LocalDateTime deadline; /** * 渠道ID(system=dict_code,custom=自定义渠道ID) */ - @ExcelProperty(value = "渠道ID", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "s=ystem=dict_code,custom=自定义渠道ID") + @ExcelProperty(value = "渠道ID") private Long channelId; /** diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderDetailVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderDetailVo.java index feeb56e..1bb07ed 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderDetailVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderDetailVo.java @@ -170,6 +170,7 @@ public class BizLogisticsOrderDetailVo implements Serializable { */ @ExcelProperty(value = "预计签收日期") // @ExcelDictFormat(readConverterExp = "物=流商提供的预估日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date estimatedDeliveryDate; /** @@ -177,6 +178,7 @@ public class BizLogisticsOrderDetailVo implements Serializable { */ @ExcelProperty(value = "实际签收日期") // @ExcelDictFormat(readConverterExp = "物=流商回传的实际日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date actualDeliveryDate; /** diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderVo.java index 8203b34..3388fad 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsOrderVo.java @@ -9,6 +9,7 @@ import org.asinkj.common.excel.annotation.ExcelDictFormat; import org.asinkj.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; @@ -106,4 +107,8 @@ public class BizLogisticsOrderVo implements Serializable { private Long shelfTimeliness; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsQuoteVo.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsQuoteVo.java index d776590..b510d33 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsQuoteVo.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/domain/vo/BizLogisticsQuoteVo.java @@ -1,6 +1,7 @@ package org.asinkj.amz.domain.vo; import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; import org.asinkj.amz.domain.BizLogisticsQuote; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; @@ -9,13 +10,13 @@ import org.asinkj.common.excel.annotation.ExcelDictFormat; import org.asinkj.common.excel.convert.ExcelDictConvert; import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; import java.util.Date; - /** * 物流报价视图对象 biz_logistics_quote * @@ -39,10 +40,13 @@ public class BizLogisticsQuoteVo implements Serializable { /** * 物流商用户ID(关联sys_user表) */ - @ExcelProperty(value = "物流商用户ID", converter = ExcelDictConvert.class) - @ExcelDictFormat(readConverterExp = "关=联sys_user表") + private Long userId; + + @ExcelProperty(value = "物流商") + private String logisticsName; + /** * 目的地(建议使用ISO国家代码如CN/US/GB) */ @@ -123,4 +127,6 @@ public class BizLogisticsQuoteVo implements Serializable { private String unit; + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java new file mode 100644 index 0000000..0f9ed3d --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/dubbo/RemoteFBADataServiceImpl.java @@ -0,0 +1,23 @@ +package org.asinkj.amz.dubbo; + +import lombok.RequiredArgsConstructor; +import org.apache.dubbo.config.annotation.DubboService; +import org.asinkj.amz.api.RemoteFBADataService; +import org.asinkj.amz.service.ISysAmazonStoreService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@RequiredArgsConstructor +@Service +@DubboService +public class RemoteFBADataServiceImpl implements RemoteFBADataService { + + @Resource + private ISysAmazonStoreService sysAmazonStoreService; + + @Override + public void pullAmzFbaDataToken(String startDate, String endDate) throws Exception { + sysAmazonStoreService.pullAmzFBAData(startDate,endDate); + } +} diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsChannelMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsChannelMapper.java index c6a9a10..51b23d9 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsChannelMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsChannelMapper.java @@ -4,6 +4,8 @@ import org.asinkj.amz.domain.BizLogisticsChannel; import org.asinkj.amz.domain.vo.BizLogisticsChannelVo; import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; +import java.util.List; + /** * 物流商渠道Mapper接口 * @@ -12,4 +14,5 @@ import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; */ public interface BizLogisticsChannelMapper extends BaseMapperPlus { + List listAllChannels(); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java index 4efa120..df7b358 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/mapper/BizLogisticsQuoteMapper.java @@ -7,6 +7,7 @@ import org.asinkj.common.mybatis.core.mapper.BaseMapperPlus; import java.time.LocalDate; import java.util.List; +import java.util.Map; /** * 物流报价Mapper接口 @@ -20,4 +21,8 @@ public interface BizLogisticsQuoteMapper extends BaseMapperPlus providerIds, @Param("quoteDate") LocalDate quoteDate ); + + + List> selectDynamicReport(@Param("channels") List channels); + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderDetailService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderDetailService.java index de1219a..9bc2df7 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderDetailService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsOrderDetailService.java @@ -66,4 +66,6 @@ public interface IBizLogisticsOrderDetailService { * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + void updateList(List list); } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java index 61e5339..148952f 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/IBizLogisticsQuoteService.java @@ -10,6 +10,7 @@ import org.asinkj.common.mybatis.core.page.PageQuery; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 物流报价Service接口 @@ -27,6 +28,8 @@ public interface IBizLogisticsQuoteService { */ BizLogisticsQuoteVo queryById(Long id); + List> generateReport(); + /** * 分页查询物流报价列表 * diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java index 781e777..533963a 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/ISysAmazonStoreService.java @@ -75,4 +75,8 @@ public interface ISysAmazonStoreService { void pullAmzFBAData(String startDate,String endDate) throws Exception; void getAmzStoreTokenData() throws Exception; + + void testAmazonData() throws Exception; + + void testAmazonData2() throws Exception; } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizInquiryRequestServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizInquiryRequestServiceImpl.java index 84ec58b..34afb41 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizInquiryRequestServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizInquiryRequestServiceImpl.java @@ -106,7 +106,7 @@ public class BizInquiryRequestServiceImpl implements IBizInquiryRequestService { lqw.eq(StringUtils.isNotBlank(bo.getDestination()), BizInquiryRequest::getDestination, bo.getDestination()); lqw.eq(StringUtils.isNotBlank(bo.getTransportChannel()), BizInquiryRequest::getTransportChannel, bo.getTransportChannel()); lqw.eq(StringUtils.isNotBlank(bo.getInquiryStatus()), BizInquiryRequest::getInquiryStatus, bo.getInquiryStatus()); - lqw.eq(bo.getDeadline() != null, BizInquiryRequest::getDeadline, bo.getDeadline()); +// lqw.ge(BizInquiryRequest::getDeadline, DateUtil.now()); lqw.eq(bo.getChannelId() != null, BizInquiryRequest::getChannelId, bo.getChannelId()); lqw.like(StringUtils.isNotBlank(bo.getChannelName()), BizInquiryRequest::getChannelName, bo.getChannelName()); lqw.eq(bo.getEffectiveStartTime() != null, BizInquiryRequest::getEffectiveStartTime, bo.getEffectiveStartTime()); @@ -175,6 +175,8 @@ public class BizInquiryRequestServiceImpl implements IBizInquiryRequestService { BizInquiryRequest bizInquiryRequest = new BizInquiryRequest(); bizInquiryRequest.setDestination(destination); bizInquiryRequest.setChannelId(NumberUtil.parseLong(channelId)); + + bizInquiryRequest.setRequesterName(LoginHelper.getLoginUser().getNickname()); if (bizInquiryRequest.getChannelId() == null) { return R.fail("渠道不能为空"); } @@ -223,20 +225,10 @@ public class BizInquiryRequestServiceImpl implements IBizInquiryRequestService { queryWrapper.eq(BizInquiryRequest::getDestination, destination); queryWrapper.eq(BizInquiryRequest::getChannelId, NumberUtil.parseLong(channelId)); queryWrapper.eq(BizInquiryRequest::getQuoteDate, date); +// queryWrapper.ge(BizInquiryRequest::getDeadline, DateUtil.now()); List bizInquiryRequestVos = baseMapper.selectVoList(queryWrapper); return TableDataInfo.build(bizInquiryRequestVos); } - - private String generateInquiryNo() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); - String datePart = sdf.format(new Date()); - int seq = sequence.incrementAndGet(); - if (seq > 999999) { // 处理溢出,例如重置或抛出异常 - sequence.set(0); - seq = 0; - } - return String.format("INQ%s%06d", datePart, seq); - } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderDetailServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderDetailServiceImpl.java index bbb88f4..d9f7222 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderDetailServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderDetailServiceImpl.java @@ -1,5 +1,6 @@ package org.asinkj.amz.service.impl; +import org.asinkj.amz.domain.BizLogisticsOrder; import org.asinkj.common.core.utils.MapstructUtils; import org.asinkj.common.core.utils.StringUtils; import org.asinkj.common.mybatis.core.page.TableDataInfo; @@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.asinkj.common.satoken.utils.LoginHelper; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizLogisticsOrderDetailBo; import org.asinkj.amz.domain.vo.BizLogisticsOrderDetailVo; @@ -93,6 +95,8 @@ public class BizLogisticsOrderDetailServiceImpl implements IBizLogisticsOrderDet lqw.eq(bo.getEstimatedDeliveryDate() != null, BizLogisticsOrderDetail::getEstimatedDeliveryDate, bo.getEstimatedDeliveryDate()); lqw.eq(bo.getActualDeliveryDate() != null, BizLogisticsOrderDetail::getActualDeliveryDate, bo.getActualDeliveryDate()); lqw.eq(bo.getTimeliness() != null, BizLogisticsOrderDetail::getTimeliness, bo.getTimeliness()); + lqw.and(wrapper -> wrapper.eq(BizLogisticsOrderDetail::getCreateBy, LoginHelper.getUserId()).or().eq(BizLogisticsOrderDetail::getLogisticsProviderId, LoginHelper.getUserId())); + lqw.orderByAsc(BizLogisticsOrderDetail::getFbaBoxNumber); return lqw; } @@ -147,4 +151,9 @@ public class BizLogisticsOrderDetailServiceImpl implements IBizLogisticsOrderDet } return baseMapper.deleteByIds(ids) > 0; } + + @Override + public void updateList(List list) { + baseMapper.updateBatchById(MapstructUtils.convert(list, BizLogisticsOrderDetail.class)); + } } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java index 9fbe704..f03bfe0 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsOrderServiceImpl.java @@ -17,6 +17,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.asinkj.common.satoken.utils.LoginHelper; +import org.asinkj.system.api.RemoteUserService; +import org.asinkj.system.api.model.LoginUser; +import org.asinkj.system.api.model.RoleDTO; import org.asinkj.utils.SerialNoGenerator; import org.springframework.stereotype.Service; import org.asinkj.amz.domain.bo.BizLogisticsOrderBo; @@ -24,10 +27,8 @@ import org.asinkj.amz.domain.vo.BizLogisticsOrderVo; import org.asinkj.amz.mapper.BizLogisticsOrderMapper; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 物流订单Service业务层处理 @@ -60,6 +61,9 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { @Resource private BizLogisticsOrderMapper bizOrderMapper; + @Resource + private RemoteUserService remoteUserService; + /** * 查询物流订单 * @@ -110,6 +114,17 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { lqw.eq(bo.getShipmentQuantity() != null, BizLogisticsOrder::getShipmentQuantity, bo.getShipmentQuantity()); lqw.eq(bo.getAmazonShelfDate() != null, BizLogisticsOrder::getAmazonShelfDate, bo.getAmazonShelfDate()); lqw.eq(bo.getShelfTimeliness() != null, BizLogisticsOrder::getShelfTimeliness, bo.getShelfTimeliness()); + lqw.and(wrapper -> wrapper.eq(BizLogisticsOrder::getCreateBy, LoginHelper.getUserId()).or().eq(BizLogisticsOrder::getLogisticsProviderId, LoginHelper.getUserId())); +// Set roleIdSet = LoginHelper.getLoginUser().getRoles().stream().map(RoleDTO::getRoleId).collect(Collectors.toSet()); +// log.info("roleIdSet:{}", roleIdSet); +// if (roleIdSet.contains(3L)){ +// // 物流 +// lqw.eq(BizLogisticsOrder::getLogisticsProviderId, LoginHelper.getUserId()); +// +// }else if (roleIdSet.contains(4L)){ +// //运营 +// lqw.eq( BizLogisticsOrder::getCreateBy, LoginHelper.getUserId()); +// } return lqw; } @@ -179,7 +194,21 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { throw new ServiceException("物流计划不存在"); } - List trackingList = bizShipmentTrackingService.queryByPlanId(planVo.getShipmentId()); + if (planVo.getShipmentStatus().equals("CLOSED")) { + throw new ServiceException("物流计划已关闭"); + } + if (planVo.getIsClosed().equals("Y")) { + throw new ServiceException("物流计划已关闭"); + } + LambdaQueryWrapper bizLogisticsOrderLambdaQueryWrapper = new LambdaQueryWrapper<>(); + bizLogisticsOrderLambdaQueryWrapper.eq(BizLogisticsOrder::getFbaShipmentId, fbaShipmentId); + Long l = bizOrderMapper.selectCount(bizLogisticsOrderLambdaQueryWrapper); + if (l > 0) { + throw new ServiceException("物流订单已存在"); + } + + + List trackingList = bizShipmentTrackingService.queryByPlanId(planVo.getShipmentId()); List itemList = bizShipmentItemService.queryByPlanId(planVo.getShipmentId()); long sum = itemList.stream().mapToLong(BizShipmentItem::getQuantityShipped).sum(); @@ -192,8 +221,9 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { bizLogisticsOrder.setOrderId(SerialNoGenerator.generateOrderNo()); bizLogisticsOrder.setLogisticsProviderId(quoteVo.getUserId()); + String nickName = remoteUserService.selectNicknameById(quoteVo.getUserId()); + bizLogisticsOrder.setLogisticsProviderName(nickName); - // todo bizLogisticsOrderBo.setLogisticsProviderName(quoteVo.getUserName()); bizLogisticsOrder.setChannelName(quoteVo.getChannelName()); // 目的地 bizLogisticsOrder.setDestination(quoteVo.getDestination()); @@ -212,7 +242,7 @@ public class BizLogisticsOrderServiceImpl implements IBizLogisticsOrderService { detail.setOrderId(bizLogisticsOrder.getOrderId()); detail.setFbaBoxNumber(bizShipmentTracking.getBoxId()); detail.setLogisticsProviderId(quoteVo.getUserId()); - // todo detail.setLogisticsProviderName(quoteVo.getUserName()); + detail.setLogisticsProviderName(nickName); detail.setChannelName(quoteVo.getChannelName()); detail.setDestination(quoteVo.getDestination()); detail.setPricePerKg(quoteVo.getPrice()); diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java index 35d721b..deff72f 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/BizLogisticsQuoteServiceImpl.java @@ -9,6 +9,7 @@ import org.asinkj.amz.domain.BizInquiryRequest; import org.asinkj.amz.domain.bo.BizLogisticsQuoteMostBo; import org.asinkj.amz.domain.vo.InquiryQuoteStatusDTO; import org.asinkj.amz.mapper.BizInquiryRequestMapper; +import org.asinkj.amz.mapper.BizLogisticsChannelMapper; import org.asinkj.amz.service.IBizLogisticsChannelService; import org.asinkj.common.core.exception.ServiceException; import org.asinkj.common.core.utils.MapstructUtils; @@ -55,6 +56,10 @@ public class BizLogisticsQuoteServiceImpl implements IBizLogisticsQuoteService { @Resource private BizInquiryRequestMapper bizInquiryRequestMapper; + + @Resource + private BizLogisticsChannelMapper bizLogisticsChannelMapper; + @Resource private RemoteUserService remoteUserService ; @@ -69,6 +74,20 @@ public class BizLogisticsQuoteServiceImpl implements IBizLogisticsQuoteService { return baseMapper.selectVoById(id); } + + + + + + @Override + public List> generateReport() { + // 1. 获取所有渠道名称 + List channels = bizLogisticsChannelMapper.listAllChannels(); + + // 2. 调用动态报表查询 + return baseMapper.selectDynamicReport(channels); + } + /** * 分页查询物流报价列表 * @@ -210,6 +229,7 @@ public class BizLogisticsQuoteServiceImpl implements IBizLogisticsQuoteService { BizLogisticsQuote bizLogisticsQuote = new BizLogisticsQuote(); bizLogisticsQuote.setDestination(bo.getDestination()); bizLogisticsQuote.setUserId(LoginHelper.getUserId()); + bizLogisticsQuote.setLogisticsName(LoginHelper.getLoginUser().getNickname()); bizLogisticsQuote.setChannelName(bo.getChannelName()); bizLogisticsQuote.setPrice(bo.getPrice()); bizLogisticsQuote.setLeadTime(bo.getLeadTime()); diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java index da027c5..916eecf 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/amz/service/impl/SysAmazonStoreServiceImpl.java @@ -33,7 +33,6 @@ import lombok.RequiredArgsConstructor; import org.asinkj.common.redis.utils.RedisUtils; import org.asinkj.common.satoken.utils.LoginHelper; import org.asinkj.resource.api.RemoteMessageService; -import org.asinkj.system.api.model.LoginUser; import org.asinkj.utils.HttpUtil; import org.jetbrains.annotations.NotNull; import org.springframework.beans.factory.annotation.Value; @@ -427,4 +426,87 @@ public class SysAmazonStoreServiceImpl implements ISysAmazonStoreService { } } + + + @Override + public void testAmazonData() throws Exception { + Map queryParam = new HashMap<>(); + queryParam.put("sid", 143); + queryParam.put("event_date", "2025-03-27"); + queryParam.put("type",2); + + + +// +// HttpUtil.postWithUrlParams("/erp/sc/data/sales_report/asinList", queryParam, new Callback() { +// @Override +// public void onFailure(@NotNull Call call, @NotNull IOException e) { +// +// log.info("onFailure"); +// } +// +// @Override +// public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { +// +// System.out.println(response.body().string()); +// } +// }); + + + + HttpUtil.postWithParams("/erp/sc/data/sales_report/asinDailyLists", queryParam, new Callback() { + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + + } + + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + System.out.println(response.body().string()); + } + }); + + } + + @Override + public void testAmazonData2() throws Exception { + Map queryParam = new HashMap<>(); + queryParam.put("sid", 143); + queryParam.put("start_date", "2025-03-26"); + queryParam.put("end_date", "2025-03-27"); + + + +// +// HttpUtil.postWithUrlParams("/erp/sc/data/sales_report/asinList", queryParam, new Callback() { +// @Override +// public void onFailure(@NotNull Call call, @NotNull IOException e) { +// +// log.info("onFailure"); +// } +// +// @Override +// public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { +// +// System.out.println(response.body().string()); +// } +// }); + + + + HttpUtil.postWithParams("/erp/sc/data/sales_report/asinList", queryParam, new Callback() { + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + + } + + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + System.out.println(response.body().string()); + } + }); + + } + + } diff --git a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/utils/HttpUtil.java b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/utils/HttpUtil.java index ad02726..53ef126 100644 --- a/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/utils/HttpUtil.java +++ b/asinkj-biz/asinkj-amz/src/main/java/org/asinkj/utils/HttpUtil.java @@ -1,6 +1,7 @@ package org.asinkj.utils; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import okhttp3.*; @@ -75,6 +76,38 @@ public class HttpUtil { buildAndSendRequest(url, queryParams, "POST", RequestBody.create(new byte[0], null), callback); } + public static void postWithParams(String url, Map queryParams, Callback callback) { + + + checkInitialized(); + Map signParams = new HashMap<>(); + Map baseParams = new HashMap<>(); + + // 动态获取最新access_token + baseParams.put("app_key", appId); + baseParams.put("access_token", RedisUtils.getCacheObject(ACCESS_TOKEN)); + long l = System.currentTimeMillis() / 1000; + baseParams.put("timestamp", String.valueOf(l)); + + signParams.putAll(baseParams); + signParams.putAll(queryParams); + + String sign = ApiSign.sign(signParams, appId); + baseParams.put("sign", sign); + + +// Map queryParams = convertToStringMap(allParams); + String json = JSON.toJSONString(queryParams); + + // 3. 创建 RequestBody(指定 MediaType 为 JSON) + RequestBody requestBody = RequestBody.create( + json, + MediaType.parse("application/json; charset=utf-8") + ); + + buildAndSendRequest(url, baseParams, "POST", requestBody, callback); + } + // POST JSON public static void postJson(String url, String jsonBody, Callback callback) { RequestBody body = RequestBody.create(jsonBody, MediaType.get("application/json")); @@ -89,7 +122,25 @@ public class HttpUtil { // 动态获取最新access_token allParams.put("app_key", appId); allParams.put("access_token", RedisUtils.getCacheObject(ACCESS_TOKEN)); - allParams.put("timestamp", System.currentTimeMillis() / 1000); + long l = System.currentTimeMillis() / 1000; + allParams.put("timestamp", String.valueOf(l)); + + String sign = ApiSign.sign(allParams, appId); + allParams.put("sign", sign); + return allParams; + } + + + private static Map mergeSighParams(Map customParams) { + checkInitialized(); + Map allParams = new HashMap<>(); + if (customParams != null) allParams.putAll(customParams); + + // 动态获取最新access_token + allParams.put("app_key", appId); + allParams.put("access_token", RedisUtils.getCacheObject(ACCESS_TOKEN)); + long l = System.currentTimeMillis() / 1000; + allParams.put("timestamp", String.valueOf(l)); String sign = ApiSign.sign(allParams, appId); allParams.put("sign", sign); diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml index eb6334b..396155e 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsChannelMapper.xml @@ -4,4 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + diff --git a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml index ff5bec6..21e78a7 100644 --- a/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml +++ b/asinkj-biz/asinkj-amz/src/main/resources/mapper/amz/BizLogisticsQuoteMapper.xml @@ -15,4 +15,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + diff --git a/asinkj-biz/asinkj-amz/src/test/java/testAmzData.java b/asinkj-biz/asinkj-amz/src/test/java/testAmzData.java new file mode 100644 index 0000000..54fb77e --- /dev/null +++ b/asinkj-biz/asinkj-amz/src/test/java/testAmzData.java @@ -0,0 +1,7 @@ +import org.asinkj.utils.HttpUtil; + +public class testAmzData { + public static void main(String[] args) throws Exception { + HttpUtil.getAmzStoreTokenData(); + } +} diff --git a/asinkj-modules/asinkj-job/pom.xml b/asinkj-modules/asinkj-job/pom.xml index d333e1e..8b3bfbc 100644 --- a/asinkj-modules/asinkj-job/pom.xml +++ b/asinkj-modules/asinkj-job/pom.xml @@ -75,6 +75,11 @@ asinkj-api-system + + org.asinkj + asinkj-api-amz + + diff --git a/asinkj-modules/asinkj-job/src/main/java/org/asinkj/job/snailjob/AmzPullFBAJobExecutor.java b/asinkj-modules/asinkj-job/src/main/java/org/asinkj/job/snailjob/AmzPullFBAJobExecutor.java new file mode 100644 index 0000000..862bbc3 --- /dev/null +++ b/asinkj-modules/asinkj-job/src/main/java/org/asinkj/job/snailjob/AmzPullFBAJobExecutor.java @@ -0,0 +1,55 @@ +package org.asinkj.job.snailjob; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import com.aizuda.snailjob.common.log.SnailJobLog; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; +import org.asinkj.amz.api.RemoteFBADataService; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +/** + * @author opensnail + * @date 2024-05-17 + */ +@Component +@JobExecutor(name = "amzPullFBAJobExecutor") +@Slf4j +public class AmzPullFBAJobExecutor { + + @DubboReference + private RemoteFBADataService remoteFBADataService; + + public ExecuteResult jobExecute(JobArgs jobArgs) throws Exception { + SnailJobLog.LOCAL.info("amzPullFBAJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs)); + SnailJobLog.REMOTE.info("amzPullFBAJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs)); + log.info("amzPullFBAJobExecutor {}", jobArgs.getJobParams()); + //昨天的日期yyyy-MM-dd + // 获取昨天的日期 + if ("yesterday".equals(jobArgs.getJobParams())) { + DateTime yesterday = DateUtil.yesterday(); + String yesterdayString = yesterday.toString("yyyy-MM-dd"); + SnailJobLog.LOCAL.info("yesterdayString. yesterdayString:{}", yesterdayString); + //获取今天的日期 + DateTime today = DateUtil.date(); + String todayString = today.toString("yyyy-MM-dd"); + SnailJobLog.LOCAL.info("todayString. todayString:{}", todayString); + remoteFBADataService.pullAmzFbaDataToken(yesterdayString, todayString); + return ExecuteResult.success("获取从昨天开始的FBA货件数据"); + } else if ("today".equals(jobArgs.getJobParams())) { + DateTime today = DateUtil.date(); + String todayString = today.toString("yyyy-MM-dd"); + SnailJobLog.LOCAL.info("todayString. todayString:{}", todayString); + remoteFBADataService.pullAmzFbaDataToken(todayString, todayString); + return ExecuteResult.success("获取今天的FBA货件数据"); + } + return ExecuteResult.success("请指定参数yesterday或者today"); + } +}