From bc40ac66d6c831dfa7dcfa14786b8111ba9d3bb2 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Sat, 4 Jan 2025 09:47:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=9D=E8=BF=85=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/modules/sixun/SxSyncCategory.java | 6 +- .../common/modules/sixun/SxSyncGoods.java | 6 + .../mall/common/modules/sixun/SxSyncVip.java | 5 +- .../controller/SxSyncCategoryController.java | 40 ---- .../sixun/controller/SxSyncController.java | 66 ++++++ .../sixun/mapper/SxSyncGoodsLogMapper.java | 17 ++ .../shop/sixun/mapper/SxSyncGoodsMapper.java | 17 ++ .../sixun/mapper/SxSyncPlanDetailMapper.java | 17 ++ .../shop/sixun/mapper/SxSyncPlanMapper.java | 17 ++ .../shop/sixun/mapper/SxSyncVipMapper.java | 1 - .../sixun/service/SxSyncGoodsLogService.java | 60 ++++++ .../sixun/service/SxSyncGoodsService.java | 60 ++++++ .../shop/sixun/service/SxSyncVipService.java | 5 +- .../impl/SxSyncCategoryServiceImpl.java | 80 ++++---- .../service/impl/SxSyncGoodsServiceImpl.java | 193 ++++++++++++++++++ .../service/impl/SxSyncVipServiceImpl.java | 88 ++++---- .../mall/shop/sixun/utils/CommonUtil.java | 41 ++++ 17 files changed, 583 insertions(+), 136 deletions(-) delete mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncCategoryController.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncController.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsLogMapper.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsMapper.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanDetailMapper.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanMapper.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsLogService.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsService.java create mode 100644 mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncGoodsServiceImpl.java diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncCategory.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncCategory.java index 39bc0b4e..481d6e30 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncCategory.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncCategory.java @@ -55,12 +55,12 @@ public class SxSyncCategory implements Serializable { @ApiModelProperty(value = "是否显示:1-前台显示 0-前台不显示") private Integer display_flag; - @ApiModelProperty(value = "同步时间戳") - private Long sync_time; - @ApiModelProperty(value = "状态") private Integer status; + @ApiModelProperty(value = "同步时间戳") + private Long sync_time; + @ApiModelProperty(value = "新增时间") private Date created_at; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncGoods.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncGoods.java index 90b0400c..cf6c4f0d 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncGoods.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncGoods.java @@ -96,6 +96,12 @@ public class SxSyncGoods implements Serializable { @ApiModelProperty(value = "状态") private Integer status; + @ApiModelProperty(value = "同步时间戳") + private Long sync_time; + + @ApiModelProperty(value = "同步备注") + private String remark; + @ApiModelProperty(value = "新增时间") private Date created_at; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncVip.java b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncVip.java index eeb14d60..5756f406 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncVip.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/sixun/SxSyncVip.java @@ -39,9 +39,6 @@ public class SxSyncVip implements Serializable { @ApiModelProperty(value = "店铺Id") private String store_id; - @ApiModelProperty(value = "会员编号") - private String vip_no; - @ApiModelProperty(value = "会员名称") private String vip_name; @@ -54,7 +51,7 @@ public class SxSyncVip implements Serializable { @ApiModelProperty(value = "会员生日") private String birthday; - @ApiModelProperty(value = "会员卡号") + @ApiModelProperty(value = "会员卡号(唯一键)") private String card_no; @ApiModelProperty(value = "会员等级") diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncCategoryController.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncCategoryController.java deleted file mode 100644 index 5ddfd200..00000000 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncCategoryController.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. - * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. - * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. - * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. - * Vestibulum commodo. Ut rhoncus gravida arcu. - */ - -package com.suisung.mall.shop.sixun.controller; - - -import com.suisung.mall.common.api.CommonResult; -import com.suisung.mall.shop.sixun.service.SxSyncCategoryService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; - -@Api(tags = "思迅同步商品分类") -@RestController -@RequestMapping("/admin/sixun/goods/category") -public class SxSyncCategoryController { - @Resource - private SxSyncCategoryService sxSyncCategoryService; - - @ApiOperation(value = "获取思迅商品分类新增到数据库", notes = "获取思迅商品分类新增到数据库") - @RequestMapping(value = "/sync", method = RequestMethod.POST) - public CommonResult list(@RequestParam(name = "storeId", defaultValue = "1") String storeId, - @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, - @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize) { - - return sxSyncCategoryService.syncCategory(storeId, pageNum, pageSize); - - } - -} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncController.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncController.java new file mode 100644 index 00000000..c0515130 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/controller/SxSyncController.java @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.controller; + + +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.shop.sixun.service.SxSyncCategoryService; +import com.suisung.mall.shop.sixun.service.SxSyncGoodsService; +import com.suisung.mall.shop.sixun.service.SxSyncVipService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags = "思迅同步商品分类") +@RestController +@RequestMapping("/admin/sixun") +public class SxSyncController { + @Resource + private SxSyncCategoryService sxSyncCategoryService; + + @Resource + private SxSyncVipService sxSyncVipService; + + @Resource + private SxSyncGoodsService sxSyncGoodsService; + + @ApiOperation(value = "获取思迅商品分类新增到数据库", notes = "获取思迅商品分类新增到数据库") + @RequestMapping(value = "/goods/category/sync", method = RequestMethod.POST) + public CommonResult syncGoodsCategory(@RequestParam(name = "storeId", defaultValue = "1") String storeId, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize) { + + return sxSyncCategoryService.syncCategory(storeId, pageNum, pageSize); + + } + + @ApiOperation(value = "获取思迅会员新增到数据库", notes = "获取思迅会员新增到数据库") + @RequestMapping(value = "/vip/sync", method = RequestMethod.POST) + public CommonResult syncVip(@RequestParam(name = "storeId", defaultValue = "1") String storeId, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize) { + + return sxSyncVipService.syncVip(storeId, pageNum, pageSize); + } + + @ApiOperation(value = "获取思迅商品新增到数据库", notes = "获取思迅商品新增到数据库") + @RequestMapping(value = "/goods/sync", method = RequestMethod.POST) + public CommonResult syncGoods(@RequestParam(name = "storeId", defaultValue = "1") String storeId, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "100") Integer pageSize) { + + return sxSyncGoodsService.syncGoods(storeId, pageNum, pageSize); + } + +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsLogMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsLogMapper.java new file mode 100644 index 00000000..3c532b51 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsLogMapper.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.suisung.mall.common.modules.sixun.SxSyncGoodsLog; +import org.springframework.stereotype.Repository; + +@Repository +public interface SxSyncGoodsLogMapper extends BaseMapper { +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsMapper.java new file mode 100644 index 00000000..489cf30d --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncGoodsMapper.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.suisung.mall.common.modules.sixun.SxSyncGoods; +import org.springframework.stereotype.Repository; + +@Repository +public interface SxSyncGoodsMapper extends BaseMapper { +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanDetailMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanDetailMapper.java new file mode 100644 index 00000000..2fb17d05 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanDetailMapper.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.suisung.mall.common.modules.sixun.SxSyncPlanDetail; +import org.springframework.stereotype.Repository; + +@Repository +public interface SxSyncPlanDetailMapper extends BaseMapper { +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanMapper.java new file mode 100644 index 00000000..96ac27a3 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncPlanMapper.java @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.suisung.mall.common.modules.sixun.SxSyncPlan; +import org.springframework.stereotype.Repository; + +@Repository +public interface SxSyncPlanMapper extends BaseMapper { +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncVipMapper.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncVipMapper.java index 0d890c65..b60e4e4f 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncVipMapper.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/mapper/SxSyncVipMapper.java @@ -9,7 +9,6 @@ package com.suisung.mall.shop.sixun.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.suisung.mall.common.modules.sixun.SxSyncCategory; import com.suisung.mall.common.modules.sixun.SxSyncVip; import org.springframework.stereotype.Repository; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsLogService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsLogService.java new file mode 100644 index 00000000..651ade3e --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsLogService.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.service; + +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.sixun.SxSyncGoods; + +import java.util.List; + +public interface SxSyncGoodsLogService { + + /** + * 同步记录 + * + * @param storeId + * @param pageNum + * @param pageSize + * @return + */ + CommonResult syncGoods(String storeId, Integer pageNum, Integer pageSize); + + /** + * 新增记录,存在了就不新增 + * + * @param sxSyncGoods + * @return + */ + Integer insert(SxSyncGoods sxSyncGoods); + + /** + * 批量更新记录,有判断是否已存在逻辑 + * + * @param list + * @return + */ + Integer insertBatch(String storeId, List list); + + /** + * 根据编号更新一条记录 + * + * @param sxSyncGoods + * @return + */ + Boolean updateByGoodsNo(SxSyncGoods sxSyncGoods); + + /** + * 根据编号获取一条记录 + * + * @param storeId + * @param goodsNo + * @return + */ + SxSyncGoods getByGoodsNo(String storeId, String goodsNo); +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsService.java new file mode 100644 index 00000000..96088bc6 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncGoodsService.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2024. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.service; + +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.sixun.SxSyncGoods; + +import java.util.List; + +public interface SxSyncGoodsService { + + /** + * 同步记录 + * + * @param storeId + * @param pageNum + * @param pageSize + * @return + */ + CommonResult syncGoods(String storeId, Integer pageNum, Integer pageSize); + + /** + * 新增记录,存在了就不新增 + * + * @param sxSyncGoods + * @return + */ + Integer insert(SxSyncGoods sxSyncGoods); + + /** + * 批量更新记录,有判断是否已存在逻辑 + * + * @param list + * @return + */ + Integer insertBatch(String storeId, List list); + + /** + * 根据编号更新一条记录 + * + * @param sxSyncGoods + * @return + */ + Boolean updateByGoodsNo(SxSyncGoods sxSyncGoods); + + /** + * 根据编号获取一条记录 + * + * @param storeId + * @param goodsNo + * @return + */ + SxSyncGoods getByGoodsNo(String storeId, String goodsNo); +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncVipService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncVipService.java index 0d912e0c..57648960 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncVipService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/SxSyncVipService.java @@ -9,7 +9,6 @@ package com.suisung.mall.shop.sixun.service; import com.suisung.mall.common.api.CommonResult; -import com.suisung.mall.common.modules.sixun.SxSyncCategory; import com.suisung.mall.common.modules.sixun.SxSyncVip; import java.util.List; @@ -17,7 +16,7 @@ import java.util.List; public interface SxSyncVipService { /** - * 同步店铺的会员 + * 同步记录 * * @param storeId * @param pageNum @@ -35,7 +34,7 @@ public interface SxSyncVipService { Integer insert(SxSyncVip sxSyncVip); /** - * 批量更新思迅的会员,有判断是否已存在逻辑 + * 批量更新记录,有判断是否已存在逻辑 * * @param list * @return diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncCategoryServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncCategoryServiceImpl.java index dae3ccde..4f9e2065 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncCategoryServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncCategoryServiceImpl.java @@ -10,13 +10,12 @@ package com.suisung.mall.shop.sixun.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.modules.sixun.SxSyncCategory; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.sixun.mapper.SxSyncCategoryMapper; @@ -24,12 +23,12 @@ import com.suisung.mall.shop.sixun.service.SxSyncCategoryService; import com.suisung.mall.shop.sixun.utils.CommonUtil; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Objects; @Service public class SxSyncCategoryServiceImpl extends BaseServiceImpl implements SxSyncCategoryService { - /** * 同步店铺的商品分类 * @@ -41,55 +40,63 @@ public class SxSyncCategoryServiceImpl extends BaseServiceImpl list = pageCategoryListFromSiXun("", pageNum, pageSize); + int syncCount =0; + for (int i = 1; i <= pages; i++) { + int count = 0; + List list = pageCategoryListFromSiXun(i, pageSize); if (CollUtil.isEmpty(list)) { continue; } - syncCount = insertBatch(storeId, list); - if (syncCount <= 0) { + count = insertBatch(storeId, list); + if (count <= 0) { continue; } - syncCount++; + syncCount+=count; } - return CommonResult.success(null, syncCount + "条数据同步成功!"); + return CommonResult.success(null, syncCount + "数据同步成功!"); } /** * 新增记录 * - * @param sxSyncCategory + * @param record * @return */ @Override - public Integer insert(SxSyncCategory sxSyncCategory) { - SxSyncCategory existsCategory = getByItemClsno(sxSyncCategory.getStore_id(), sxSyncCategory.getItem_clsno()); - if (existsCategory != null) { + public Integer insert(SxSyncCategory record) { + SxSyncCategory exists = getByItemClsno(record.getStore_id(), record.getItem_clsno()); + if (exists != null) { + Long id = exists.getId(); + Date createdAt = exists.getCreated_at(); // 置空无关的属性值 - existsCategory.setId(null); - existsCategory.setStatus(null); - existsCategory.setSync_time(null); - existsCategory.setCreated_at(null); - existsCategory.setUpdated_at(null); + exists.setId(null); + exists.setStatus(null); + exists.setSync_time(null); + exists.setCreated_at(null); + exists.setUpdated_at(null); // 比较对象各个字段是否有改变? - if (Objects.deepEquals(existsCategory, sxSyncCategory)) { + if (Objects.deepEquals(exists, record)) { return 0; } - return updateByItemClsNo(sxSyncCategory) ? 1 : 0; + record.setId(id); + record.setSync_time(0L); + record.setCreated_at(createdAt); + record.setUpdated_at(new Date()); + record.setStatus(CommonConstant.Disable2); + return this.updateById(record)? 1 : 0; } - return baseMapper.insert(sxSyncCategory); + return baseMapper.insert(record); } /** @@ -144,57 +151,48 @@ public class SxSyncCategoryServiceImpl extends BaseServiceImpl pageCategoryListFromSiXun(String clsParent, Integer pageNo, Integer pageSize) { + public List pageCategoryListFromSiXun(Integer pageNo, Integer pageSize) { JSONObject params = new JSONObject(); - params.put("clsParent", clsParent); params.put("pageNo", pageNo); params.put("pageSize", pageSize); - JSONObject respObj = CommonUtil.sendPostRequestToSiXun( "/v1/category/page", params); + JSONObject respObj = CommonUtil.sendPostRequestToSiXun("/v1/category/page", params); if (respObj == null) { return null; } - if (!respObj.getStr("code").equals("0") || respObj.get("data") == null) { + if (!CommonUtil.hasSuccessData(respObj)) { return null; } // 驼峰命名改成下划线命名 - String listJson = StrUtil.toUnderlineCase(respObj.getByPath("data.list", String.class)); - return JSONUtil.toList(listJson, SxSyncCategory.class); + return JSONUtil.toList(CommonUtil.toUnderlineJson(respObj, "data.list"), SxSyncCategory.class); } /** * 获取分类的页数 * - * @param clsParent * @param pageNo * @param pageSize * @return */ - public Integer getCategoryRecordTotal(String clsParent, Integer pageNo, Integer pageSize) { + public Integer getCategoryRecordTotal(Integer pageNo, Integer pageSize) { JSONObject params = new JSONObject(); - params.put("clsParent", clsParent); params.put("pageNo", pageNo); params.put("pageSize", pageSize); - JSONObject respObj = CommonUtil.sendPostRequestToSiXun( "/v1/category/page", params); + JSONObject respObj = CommonUtil.sendPostRequestToSiXun("/v1/category/page", params); if (respObj == null) { return 0; } - if (!respObj.getStr("code").equals("0") || respObj.get("total") == null) { + if (!CommonUtil.isSuccess(respObj) || respObj.getByPath("data.total")== null) { return 0; } - return Convert.toInt(respObj.get("total")); + return Convert.toInt(respObj.getByPath("data.total")); } - - - - - // ########### 从思迅商锐9.7系统获取数据区域 结束 } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncGoodsServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncGoodsServiceImpl.java new file mode 100644 index 00000000..3e140ab0 --- /dev/null +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncGoodsServiceImpl.java @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.shop.sixun.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.constant.CommonConstant; +import com.suisung.mall.common.modules.sixun.SxSyncGoods; +import com.suisung.mall.core.web.service.impl.BaseServiceImpl; +import com.suisung.mall.shop.sixun.mapper.SxSyncGoodsMapper; +import com.suisung.mall.shop.sixun.service.SxSyncGoodsService; +import com.suisung.mall.shop.sixun.utils.CommonUtil; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class SxSyncGoodsServiceImpl extends BaseServiceImpl implements SxSyncGoodsService { + + /** + * 同步记录 + * + * @param storeId + * @param pageNum + * @param pageSize + * @return + */ + @Override + public CommonResult syncGoods(String storeId, Integer pageNum, Integer pageSize) { + // 记录总数 + Integer total = getGoodsRecordTotal(pageNum, pageSize); + // 总页数 + int pages = CommonUtil.getPagesCount(total, pageSize); + + int syncCount = 0; + + for (int i = 1; i <= pages; i++) { + int count = 0; + List list = pageGoodsListFromSiXun(i, pageSize); + if (CollUtil.isEmpty(list)) { + continue; + } + + count = insertBatch(storeId, list); + if (count <= 0) { + continue; + } + + syncCount+=count; + } + + return CommonResult.success(null, syncCount + "条数据同步成功!"); + } + + /** + * 新增记录 + * + * @param record + * @return + */ + @Override + public Integer insert(SxSyncGoods record) { + SxSyncGoods exists = getByGoodsNo(record.getStore_id(), record.getItem_no()); + if (exists != null) { + Long id = exists.getId(); + Date createdAt = exists.getCreated_at(); + // 置空无关的属性值 + exists.setId(null); + exists.setStatus(null); + exists.setSync_time(null); + exists.setRemark(null); + exists.setCreated_at(null); + exists.setUpdated_at(null); + + // 比较对象各个字段是否有改变? + if (Objects.deepEquals(exists, record)) { + return 0; + } + + record.setId(id); + record.setCreated_at(createdAt); + record.setUpdated_at(new Date()); + record.setStatus(CommonConstant.Disable2); + record.setSync_time(0L); + record.setRemark(""); + return this.updateById(record)? 1 : 0; + } + + return baseMapper.insert(record); + } + + /** + * 批量更新记录,有判断是否已存在逻辑 + * + * @param list + * @return + */ + @Override + public Integer insertBatch(String storeId, List list) { + if (CollUtil.isEmpty(list)) { + return 0; + } + + int count = 0; + for (SxSyncGoods sxSyncGoods : list) { + sxSyncGoods.setStore_id(storeId); + if (insert(sxSyncGoods) > 0) { + count += 1; + } + } + return count; + } + + /** + * 根据编号更新一条记录 + * + * @param sxSyncGoods + * @return + */ + @Override + public Boolean updateByGoodsNo(SxSyncGoods sxSyncGoods) { + UpdateWrapper updateWrapper = new UpdateWrapper<>(); + updateWrapper.eq("item_no", sxSyncGoods.getItem_no()); + return update(sxSyncGoods, updateWrapper); + } + + /** + * 根据编号获取一条记录 + * + * @param goodsNo + * @return + */ + @Override + public SxSyncGoods getByGoodsNo(String storeId, String goodsNo) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("store_id", storeId); + queryWrapper.eq("item_no", goodsNo); + return baseMapper.selectOne(queryWrapper); + } + + + // ########### 从思迅商锐9.7系统获取数据区域 开始 + + public List pageGoodsListFromSiXun(Integer pageNo, Integer pageSize) { + JSONObject params = new JSONObject(); + params.put("pageNo", pageNo); + params.put("pageSize", pageSize); + + JSONObject respObj = CommonUtil.sendPostRequestToSiXun("/v1/goods/page", params); + if (!CommonUtil.hasSuccessData(respObj)) { + return null; + } + + // 驼峰命名改成下划线命名 + return JSONUtil.toList(CommonUtil.toUnderlineJson(respObj, "data.list"), SxSyncGoods.class); + } + + /** + * 获取记录总数 + * + * @param pageNo + * @param pageSize + * @return + */ + public Integer getGoodsRecordTotal(Integer pageNo, Integer pageSize) { + JSONObject params = new JSONObject(); + params.put("pageNo", pageNo); + params.put("pageSize", pageSize); + + JSONObject respObj = CommonUtil.sendPostRequestToSiXun("/v1/goods/page", params); + if (!CommonUtil.isSuccess(respObj) || respObj.getByPath("data.total")== null) { + return 0; + } + + return Convert.toInt(respObj.getByPath("data.total")); + } + + // ########### 从思迅商锐9.7系统获取数据区域 结束 + +} diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncVipServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncVipServiceImpl.java index 9db8b7ae..e5f044e6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncVipServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sixun/service/impl/SxSyncVipServiceImpl.java @@ -10,12 +10,12 @@ package com.suisung.mall.shop.sixun.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; -import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.modules.sixun.SxSyncVip; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import com.suisung.mall.shop.sixun.mapper.SxSyncVipMapper; @@ -23,6 +23,7 @@ import com.suisung.mall.shop.sixun.service.SxSyncVipService; import com.suisung.mall.shop.sixun.utils.CommonUtil; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -30,7 +31,7 @@ import java.util.Objects; public class SxSyncVipServiceImpl extends BaseServiceImpl implements SxSyncVipService { /** - * 同步店铺的会员 + * 同步店铺的 * * @param storeId * @param pageNum @@ -42,22 +43,23 @@ public class SxSyncVipServiceImpl extends BaseServiceImpl list = pageVipListFromSiXun(pageNum, pageSize); + for (int i = 1; i <= pages; i++) { + int count = 0; + List list = pageVipListFromSiXun(i, pageSize); if (CollUtil.isEmpty(list)) { continue; } - syncCount = insertBatch(storeId, list); - if (syncCount <= 0) { + count = insertBatch(storeId, list); + if (count <= 0) { continue; } - syncCount++; + syncCount+=count; } return CommonResult.success(null, syncCount + "条数据同步成功!"); @@ -66,33 +68,40 @@ public class SxSyncVipServiceImpl extends BaseServiceImpl updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("vip_no", sxSyncVip.getVip_no()); + updateWrapper.eq("vip_no", sxSyncVip.getCard_no()); return update(sxSyncVip, updateWrapper); } /** - * 根据会员编号获取一条记录 + * 根据编号获取一条记录 * - * @param vipNo + * @param cardNo * @return */ @Override - public SxSyncVip getByVipNo(String storeId, String vipNo) { + public SxSyncVip getByVipNo(String storeId, String cardNo) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("store_id", storeId); - queryWrapper.eq("vip_no", vipNo); + queryWrapper.eq("card_no", cardNo); return baseMapper.selectOne(queryWrapper); } // ########### 从思迅商锐9.7系统获取数据区域 开始 - public List pageVipListFromSiXun( Integer pageNo, Integer pageSize) { + public List pageVipListFromSiXun(Integer pageNo, Integer pageSize) { JSONObject params = new JSONObject(); params.put("pageNo", pageNo); params.put("pageSize", pageSize); - JSONObject respObj = CommonUtil.sendPostRequestToSiXun( "/v1/vip/page", params); - if (respObj == null) { - return null; - } - - if (!respObj.getStr("code").equals("0") || respObj.get("data") == null) { + JSONObject respObj = CommonUtil.sendPostRequestToSiXun("/v1/vip/page", params); + if (!CommonUtil.hasSuccessData(respObj)) { return null; } // 驼峰命名改成下划线命名 - String listJson = StrUtil.toUnderlineCase(respObj.getByPath("data.list", String.class)); - return JSONUtil.toList(listJson, SxSyncVip.class); + return JSONUtil.toList(CommonUtil.toUnderlineJson(respObj, "data.list"), SxSyncVip.class); } /** - * 获取会员的页数 + * 获取记录总数 * * @param pageNo * @param pageSize @@ -174,16 +178,12 @@ public class SxSyncVipServiceImpl extends BaseServiceImpl