From a7a18bfa0ef15fd5e111f1a4a7b747483376831d Mon Sep 17 00:00:00 2001 From: Richie <280645618@qq.com> Date: Sat, 30 Mar 2024 10:35:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BF=AB=E6=89=8B=E7=94=B5?= =?UTF-8?q?=E5=95=86=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qihang/common/common/ResultVoEnum.java | 3 +- .../com/qihang/common/enums/EnumShopType.java | 1 + doc/sql/qihang-oms.sql | 56 ---- .../kuaishou-merchant-open-sdk-1.0.10.jar | Bin 0 -> 180621 bytes open-api/kwai-api/pom.xml | 30 ++ .../main/java/com/qihang/kwai/KwaiApi.java | 15 + .../com/qihang/kwai/common/PullRequest.java | 8 + .../qihang/kwai/config/MybatisPlusConfig.java | 19 ++ .../controller/AjaxOrderKwaiController.java | 213 +++++++++++++ .../kwai/controller/HomeController.java | 4 + .../kwai/controller/KwaiOAuthController.java | 73 +++++ .../kwai/controller/KwaiOrderController.java | 110 +++++++ .../com/qihang/kwai/domain/KwaiOrder.java | 139 ++++++++ .../qihang/kwai/domain/KwaiOrdersItem.java | 93 ++++++ .../com/qihang/kwai/domain/SysPlatform.java | 48 +++ .../java/com/qihang/kwai/domain/SysShop.java | 98 ++++++ .../qihang/kwai/mapper/KwaiOrderMapper.java | 18 ++ .../kwai/mapper/KwaiOrdersItemMapper.java | 18 ++ .../qihang/kwai/mapper/SysPlatformMapper.java | 18 ++ .../com/qihang/kwai/mapper/SysShopMapper.java | 18 ++ .../com/qihang/kwai/mapper/SysUserMapper.java | 130 ++++++++ .../qihang/kwai/service/KwaiOrderService.java | 13 + .../kwai/service/KwaiOrdersItemService.java | 13 + .../kwai/service/SysPlatformService.java | 13 + .../qihang/kwai/service/SysShopService.java | 13 + .../kwai/service/SysUserServiceImpl.java | 298 ++++++++++++++++++ .../service/impl/KwaiOrderServiceImpl.java | 22 ++ .../impl/KwaiOrdersItemServiceImpl.java | 22 ++ .../service/impl/SysPlatformServiceImpl.java | 22 ++ .../kwai/service/impl/SysShopServiceImpl.java | 34 ++ .../src/main/resources/application.yml | 23 ++ .../main/resources/mapper/KwaiOrderMapper.xml | 46 +++ .../resources/mapper/KwaiOrdersItemMapper.xml | 34 ++ .../resources/mapper/SysPlatformMapper.xml | 22 ++ .../main/resources/mapper/SysShopMapper.xml | 35 ++ .../main/resources/mapper/SysUserMapper.xml | 195 ++++++++++++ .../test/java/com/qihang/kwai/AppTest.java | 38 +++ {wei-api => open-api}/pom.xml | 26 +- {wei-api => open-api/wei-api}/.gitignore | 0 open-api/wei-api/pom.xml | 98 ++++++ .../src/main/java/com/qihang/wei/WeiApi.java | 0 .../qihang/wei/config/MybatisPlusConfig.java | 0 .../wei/controller/GoodsApiController.java | 0 .../qihang/wei/controller/HomeController.java | 0 .../wei/controller/OrderApiController.java | 0 .../java/com/qihang/wei/domain/OGoodsSku.java | 0 .../com/qihang/wei/domain/SysPlatform.java | 0 .../java/com/qihang/wei/domain/SysShop.java | 0 .../java/com/qihang/wei/domain/WeiGoods.java | 0 .../com/qihang/wei/domain/WeiGoodsSku.java | 0 .../java/com/qihang/wei/domain/WeiOrder.java | 0 .../com/qihang/wei/domain/WeiOrderItem.java | 0 .../qihang/wei/mapper/OGoodsSkuMapper.java | 0 .../qihang/wei/mapper/SysPlatformMapper.java | 0 .../com/qihang/wei/mapper/SysShopMapper.java | 0 .../com/qihang/wei/mapper/SysUserMapper.java | 0 .../com/qihang/wei/mapper/WeiGoodsMapper.java | 0 .../qihang/wei/mapper/WeiGoodsSkuMapper.java | 0 .../qihang/wei/mapper/WeiOrderItemMapper.java | 0 .../com/qihang/wei/mapper/WeiOrderMapper.java | 0 .../com/qihang/wei/openApi/ApiCommon.java | 0 .../qihang/wei/openApi/OrderApiHelper.java | 0 .../com/qihang/wei/openApi/PullRequest.java | 0 .../wei/openApi/bo/CreateTimeRangeBo.java | 0 .../wei/openApi/bo/GoodsDetailApiBo.java | 0 .../qihang/wei/openApi/bo/GoodsListApiBo.java | 0 .../qihang/wei/openApi/bo/OrderDetailBo.java | 0 .../qihang/wei/openApi/bo/OrderListBo.java | 0 .../wei/openApi/service/GoodsApiService.java | 0 .../wei/openApi/service/OrderApiService.java | 0 .../openApi/service/ShopInfoApiService.java | 0 .../wei/openApi/service/TokenApiService.java | 0 .../com/qihang/wei/openApi/vo/BaseResVo.java | 0 .../qihang/wei/openApi/vo/GoodsDetailVo.java | 0 .../qihang/wei/openApi/vo/GoodsListVo.java | 0 .../qihang/wei/openApi/vo/OrderDetailVo.java | 0 .../qihang/wei/openApi/vo/OrderListVo.java | 0 .../com/qihang/wei/openApi/vo/OrderVo.java | 0 .../openApi/vo/OrderVoDeliverInfoAddress.java | 0 .../wei/openApi/vo/OrderVoDeliveryInfo.java | 0 .../qihang/wei/openApi/vo/OrderVoDetail.java | 0 .../openApi/vo/OrderVoDetailProductInfo.java | 0 .../qihang/wei/openApi/vo/ProductSkuVo.java | 0 .../com/qihang/wei/openApi/vo/ProductVo.java | 0 .../wei/openApi/vo/ShopApiResultVo.java | 0 .../com/qihang/wei/openApi/vo/ShopInfoVo.java | 0 .../java/com/qihang/wei/openApi/vo/Token.java | 0 .../qihang/wei/service/OGoodsSkuService.java | 0 .../wei/service/SysPlatformService.java | 0 .../qihang/wei/service/SysShopService.java | 0 .../wei/service/SysUserServiceImpl.java | 0 .../qihang/wei/service/WeiGoodsService.java | 0 .../wei/service/WeiGoodsSkuService.java | 0 .../wei/service/WeiOrderItemService.java | 0 .../qihang/wei/service/WeiOrderService.java | 0 .../service/impl/OGoodsSkuServiceImpl.java | 0 .../service/impl/SysPlatformServiceImpl.java | 0 .../wei/service/impl/SysShopServiceImpl.java | 0 .../wei/service/impl/WeiGoodsServiceImpl.java | 0 .../service/impl/WeiGoodsSkuServiceImpl.java | 0 .../service/impl/WeiOrderItemServiceImpl.java | 0 .../wei/service/impl/WeiOrderServiceImpl.java | 0 .../java/com/qihang/wei/utils/RemoteUtil.java | 0 .../src/main/resources/application.yml | 0 .../main/resources/mapper/OGoodsSkuMapper.xml | 0 .../resources/mapper/SysPlatformMapper.xml | 0 .../main/resources/mapper/SysShopMapper.xml | 0 .../main/resources/mapper/SysUserMapper.xml | 0 .../main/resources/mapper/WeiGoodsMapper.xml | 0 .../resources/mapper/WeiGoodsSkuMapper.xml | 0 .../resources/mapper/WeiOrderItemMapper.xml | 0 .../main/resources/mapper/WeiOrderMapper.xml | 0 .../src/test/java/com/qihang/wei/AppTest.java | 0 pom.xml | 3 +- 114 files changed, 2009 insertions(+), 73 deletions(-) create mode 100644 open-api/kwai-api/libs/kuaishou-merchant-open-sdk-1.0.10.jar create mode 100644 open-api/kwai-api/pom.xml create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/KwaiApi.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/common/PullRequest.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/config/MybatisPlusConfig.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/controller/AjaxOrderKwaiController.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/controller/HomeController.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOAuthController.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOrderController.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrder.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrdersItem.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysPlatform.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysShop.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrderMapper.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrdersItemMapper.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysPlatformMapper.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysShopMapper.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysUserMapper.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrderService.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrdersItemService.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysPlatformService.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysShopService.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysUserServiceImpl.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrderServiceImpl.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrdersItemServiceImpl.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysPlatformServiceImpl.java create mode 100644 open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysShopServiceImpl.java create mode 100644 open-api/kwai-api/src/main/resources/application.yml create mode 100644 open-api/kwai-api/src/main/resources/mapper/KwaiOrderMapper.xml create mode 100644 open-api/kwai-api/src/main/resources/mapper/KwaiOrdersItemMapper.xml create mode 100644 open-api/kwai-api/src/main/resources/mapper/SysPlatformMapper.xml create mode 100644 open-api/kwai-api/src/main/resources/mapper/SysShopMapper.xml create mode 100644 open-api/kwai-api/src/main/resources/mapper/SysUserMapper.xml create mode 100644 open-api/kwai-api/src/test/java/com/qihang/kwai/AppTest.java rename {wei-api => open-api}/pom.xml (88%) rename {wei-api => open-api/wei-api}/.gitignore (100%) create mode 100644 open-api/wei-api/pom.xml rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/WeiApi.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/config/MybatisPlusConfig.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/controller/GoodsApiController.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/controller/HomeController.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/controller/OrderApiController.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/OGoodsSku.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/SysPlatform.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/SysShop.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/WeiGoods.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/WeiGoodsSku.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/WeiOrder.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/domain/WeiOrderItem.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/OGoodsSkuMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/SysPlatformMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/SysShopMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/SysUserMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/WeiGoodsMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/WeiGoodsSkuMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/WeiOrderItemMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/mapper/WeiOrderMapper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/ApiCommon.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/OrderApiHelper.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/PullRequest.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/bo/CreateTimeRangeBo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/bo/GoodsDetailApiBo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/bo/GoodsListApiBo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/bo/OrderDetailBo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/bo/OrderListBo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/service/GoodsApiService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/service/OrderApiService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/service/ShopInfoApiService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/service/TokenApiService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/BaseResVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/GoodsDetailVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/GoodsListVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderDetailVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderListVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliverInfoAddress.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliveryInfo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetail.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetailProductInfo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/ProductSkuVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/ProductVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/ShopApiResultVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/ShopInfoVo.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/openApi/vo/Token.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/OGoodsSkuService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/SysPlatformService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/SysShopService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/SysUserServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/WeiGoodsService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/WeiGoodsSkuService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/WeiOrderItemService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/WeiOrderService.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/OGoodsSkuServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/SysPlatformServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/SysShopServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/WeiGoodsServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/WeiGoodsSkuServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/WeiOrderItemServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/service/impl/WeiOrderServiceImpl.java (100%) rename {wei-api => open-api/wei-api}/src/main/java/com/qihang/wei/utils/RemoteUtil.java (100%) rename {wei-api => open-api/wei-api}/src/main/resources/application.yml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/OGoodsSkuMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/SysPlatformMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/SysShopMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/SysUserMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/WeiGoodsMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/WeiGoodsSkuMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/WeiOrderItemMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/main/resources/mapper/WeiOrderMapper.xml (100%) rename {wei-api => open-api/wei-api}/src/test/java/com/qihang/wei/AppTest.java (100%) diff --git a/core/common/src/main/java/com/qihang/common/common/ResultVoEnum.java b/core/common/src/main/java/com/qihang/common/common/ResultVoEnum.java index 58fbf280..ab280d74 100644 --- a/core/common/src/main/java/com/qihang/common/common/ResultVoEnum.java +++ b/core/common/src/main/java/com/qihang/common/common/ResultVoEnum.java @@ -8,10 +8,11 @@ package com.qihang.common.common; */ public enum ResultVoEnum { SUCCESS("成功", 0), + TokenFail("Token失效",401), NotFound("NotFound", 404),//没有找到 Unable("Unable", 403),//无法处理 // NotLogin("未登录", 400),//未登录 - Cancelled("Cancelled", 401),//已经取消的 + Cancelled("Cancelled", 408),//已经取消的 StateError("StateError", 402),//状态错误 Locking("Locking", 405),//锁定,不能操作 NumberLess("数量不足", 406), diff --git a/core/common/src/main/java/com/qihang/common/enums/EnumShopType.java b/core/common/src/main/java/com/qihang/common/enums/EnumShopType.java index 343c1f08..eb693c1b 100644 --- a/core/common/src/main/java/com/qihang/common/enums/EnumShopType.java +++ b/core/common/src/main/java/com/qihang/common/enums/EnumShopType.java @@ -12,6 +12,7 @@ public enum EnumShopType { JD("京东", 2), DOUDIAN("抖音", 3), WEI("微信视频号小店", 5), + KWAI("快手小店", 6), PDD("拼多多", 4); private String name; private int index; diff --git a/doc/sql/qihang-oms.sql b/doc/sql/qihang-oms.sql index 753c6bf9..1d1b447b 100644 --- a/doc/sql/qihang-oms.sql +++ b/doc/sql/qihang-oms.sql @@ -1615,29 +1615,6 @@ INSERT INTO `sys_menu` VALUES (117, '菜单管理', 5, 1, 'menu', 'system/menu/i INSERT INTO `sys_menu` VALUES (2078, '添加ERP商品', 4, 9, 'goods_add', 'goods/create', NULL, 1, 0, 'C', '0', '0', NULL, 'checkbox', 'admin', '2024-03-18 07:59:57', '', NULL, ''); INSERT INTO `sys_menu` VALUES (2079, '字典管理', 5, 9, 'dict', 'system/dict/index', NULL, 1, 0, 'C', '0', '0', '', 'dict', 'admin', '2024-03-18 08:43:55', 'admin', '2024-03-18 08:44:08', ''); --- ---------------------------- --- Table structure for sys_platform --- ---------------------------- -DROP TABLE IF EXISTS `sys_platform`; -CREATE TABLE `sys_platform` ( - `id` int(0) NOT NULL, - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台名', - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台编码', - `app_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, - `app_secret` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, - `redirect_uri` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '平台回调uri', - `server_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接口访问地址', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_platform --- ---------------------------- -INSERT INTO `sys_platform` VALUES (1, '天猫', 'TMALL', '', '', NULL, NULL); -INSERT INTO `sys_platform` VALUES (2, '京东', 'JD', '', '', '', ''); -INSERT INTO `sys_platform` VALUES (3, '抖店', 'DOUDIAN', '', '', NULL, NULL); -INSERT INTO `sys_platform` VALUES (4, '拼多多', 'PDD', '', '', NULL, NULL); -INSERT INTO `sys_platform` VALUES (5, '视频号小店', 'WEI', '', NULL, NULL, 'https://api.weixin.qq.com'); -- ---------------------------- -- Table structure for sys_post @@ -1809,39 +1786,6 @@ INSERT INTO `sys_role_menu` VALUES (2, 1058); INSERT INTO `sys_role_menu` VALUES (2, 1059); INSERT INTO `sys_role_menu` VALUES (2, 1060); --- ---------------------------- --- Table structure for sys_shop --- ---------------------------- -DROP TABLE IF EXISTS `sys_shop`; -CREATE TABLE `sys_shop` ( - `id` int(0) NOT NULL AUTO_INCREMENT COMMENT '主键', - `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '店铺名', - `type` int(0) NOT NULL COMMENT '对应第三方平台Id', - `url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '店铺url', - `sort` int(0) NOT NULL DEFAULT 9 COMMENT '排序', - `status` int(0) DEFAULT 0 COMMENT '状态(1正常2已删除)', - `modify_on` bigint(0) NOT NULL COMMENT '更新时间', - `remark` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '描述', - `seller_id` bigint(0) NOT NULL DEFAULT 0 COMMENT '第三方平台店铺id,淘宝天猫开放平台使用', - `app_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'Appkey', - `app_sercet` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'Appsercet', - `access_token` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '第三方平台sessionKey(access_token)', - `expires_in` bigint(0) DEFAULT NULL COMMENT '到期', - `access_token_begin` bigint(0) DEFAULT NULL COMMENT 'access_token开始时间', - `refresh_token` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '刷新token', - `refresh_token_timeout` bigint(0) DEFAULT NULL COMMENT '刷新token过期时间', - `api_request_url` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '请求url', - PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '数据中心-店铺' ROW_FORMAT = Dynamic; - --- ---------------------------- --- Records of sys_shop --- ---------------------------- -INSERT INTO `sys_shop` VALUES (1, '天猫旗舰店', 1, '', 98, 1, 0, '', 59972781, '', '', '', NULL, NULL, NULL, NULL, 'http://gw.api.taobao.com/router/rest'); -INSERT INTO `sys_shop` VALUES (2, '京东旗舰店', 2, NULL, 9, 1, 0, NULL, 10706, NULL, NULL, '', 31535999, NULL, '', NULL, NULL); -INSERT INTO `sys_shop` VALUES (3, '抖音旗舰店', 3, 'http://openapi.jinritemai.com', 87, 1, 1653672695, NULL, 0, '', '', '', NULL, NULL, NULL, NULL, '2'); -INSERT INTO `sys_shop` VALUES (5, '拼多多旗舰店', 4, NULL, 99, 1, 1680698886, '', 100061591, NULL, NULL, '', NULL, NULL, NULL, NULL, NULL); -INSERT INTO `sys_shop` VALUES (6, '视频号小店', 5, NULL, 9, 0, 0, NULL, 0, '', '', '', NULL, NULL, NULL, NULL, 'https://api.weixin.qq.com'); -- ---------------------------- -- Table structure for sys_shop_pull_lasttime diff --git a/open-api/kwai-api/libs/kuaishou-merchant-open-sdk-1.0.10.jar b/open-api/kwai-api/libs/kuaishou-merchant-open-sdk-1.0.10.jar new file mode 100644 index 0000000000000000000000000000000000000000..b654954aa5cc5dac9c120156090277dcfc9384b5 GIT binary patch literal 180621 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

|k6&LDmURY9zTfz)+C#!LS?NVxq&BQ$96rZZMmg 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

|lIWW$S!2aH~j=u8F;J`ZE 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 literal 0 HcmV?d00001 diff --git a/open-api/kwai-api/pom.xml b/open-api/kwai-api/pom.xml new file mode 100644 index 00000000..acf9a5c0 --- /dev/null +++ b/open-api/kwai-api/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + + com.qihang + open-api + 1.0.0 + + + com.qihang.kwai + kwai-api + jar + + kwai-api + http://maven.apache.org + + + UTF-8 + + + + + kuaishou + kuaishou-merchant-open-sdk- + 1.0.10 + system + ${project.basedir}/libs/kuaishou-merchant-open-sdk-1.0.10.jar + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/KwaiApi.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/KwaiApi.java new file mode 100644 index 00000000..5aad4861 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/KwaiApi.java @@ -0,0 +1,15 @@ +package com.qihang.kwai; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; + +@ComponentScan(basePackages={"com.qihang"}) +@SpringBootApplication +public class KwaiApi { + public static void main( String[] args ) + { + System.out.println( "Hello kwai-api!" ); + SpringApplication.run(KwaiApi.class, args); + } +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/common/PullRequest.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/common/PullRequest.java new file mode 100644 index 00000000..b19481a4 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/common/PullRequest.java @@ -0,0 +1,8 @@ +package com.qihang.kwai.common; + +import lombok.Data; + +@Data +public class PullRequest { + private Integer shopId;//店铺Id +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/config/MybatisPlusConfig.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/config/MybatisPlusConfig.java new file mode 100644 index 00000000..6eeb92b7 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/config/MybatisPlusConfig.java @@ -0,0 +1,19 @@ +package com.qihang.kwai.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@MapperScan("com.qihang.kwai.mapper") +public class MybatisPlusConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); //注意使用哪种数据库 + return interceptor; + } +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/AjaxOrderKwaiController.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/AjaxOrderKwaiController.java new file mode 100644 index 00000000..7c7b1aef --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/AjaxOrderKwaiController.java @@ -0,0 +1,213 @@ +package com.qihang.kwai.controller; + +import com.kuaishou.merchant.open.api.KsMerchantApiException; +import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient; +import com.kuaishou.merchant.open.api.request.KsMerchantOrderListRequest; +import com.kuaishou.merchant.open.api.request.KsMerchantOrderLogisticsUpdateRequest; +import com.kuaishou.merchant.open.api.response.KsMerchantOrderListResponse; +import com.qihang.common.common.AjaxResult; +import com.qihang.common.common.ResultVo; +import com.qihang.common.common.ResultVoEnum; +import com.qihang.common.enums.EnumShopType; +import com.qihang.kwai.common.PullRequest; +import com.qihang.kwai.domain.KwaiOrder; +import com.qihang.kwai.service.KwaiOrderService; +import com.qihang.kwai.service.SysPlatformService; +import com.qihang.kwai.service.SysShopService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.math.BigDecimal; +import java.util.*; + +@RequestMapping("/order") +@RestController +public class AjaxOrderKwaiController { + private static Logger log = LoggerFactory.getLogger(AjaxOrderKwaiController.class); + @Autowired + private SysPlatformService platformService; + @Autowired + private KwaiOrderService kwaiOrderService; + @Autowired + private SysShopService shopService; +// private static String appKey="ks701717119425407331"; +// // 对应授权商家快手账号 +// private static long sellerId = 1372638315L; + + @RequestMapping(value = "/pull_order", method = RequestMethod.POST) + public AjaxResult getOrderList(@RequestBody PullRequest reqData){ + Integer shopId = reqData.getShopId(); + var shop = shopService.getById(shopId); + var platform = platformService.getById(EnumShopType.KWAI.getIndex()); +// String accessToken = shop.getAccessToken(); +// String startDate = "";//reqData.getString("startTime"); +// String endDate = "";//reqData.getString("endTime"); + + Long endTime = System.currentTimeMillis() / 1000;//订单更新结束时间 + Long startTime = endTime-(60 * 60 * 24 * 1);//订单更新开始时间 + +// if(!StringUtils.isEmpty(startDate))startTime = DateUtil.dateToStamp(startDate).longValue(); + +// if (!StringUtils.isEmpty(endDate)) endTime = DateUtil.dateTimeToStamp(endDate + " 23:59:00").longValue(); + + + long kaishidaojiesu = endTime - startTime; + long forSize = (kaishidaojiesu % (60 * 60 * 24) == 0) ? kaishidaojiesu / (60 * 60 * 24) : kaishidaojiesu / (60 * 60 * 24) + 1;//计算需要循环的次数 + +// log.info("开始循环更新快手订单。开始时间:" + DateUtil.unixTimeStampToDate(startTime) + "结束时间:" + DateUtil.unixTimeStampToDate(endTime) + "总共循环" + forSize); + int pageIndex = 1; + int pageSize = 50; + + ResultVo result=null; + for (int i = 0; i < forSize; i++) { + Long startTime1 = startTime + i * 60 * 60 * 24; + Long endTime1 = startTime1 + 60 * 60 * 24; + result = this.pullOrder(platform.getAppKey(),shop.getSellerId(), pageIndex,pageSize,shop.getAccessToken(), startTime1, endTime1); + + if(result.getCode()>0) return AjaxResult.error(result.getCode(), result.getMsg()); + //计算总页数 + int totalPage = (result.getData().intValue() % pageSize == 0) ? result.getData().intValue() / pageSize : (result.getData().intValue() / pageSize) + 1; + + while (pageIndex < totalPage) { + pageIndex++; + result = this.pullOrder(platform.getAppKey(),shop.getSellerId(),pageIndex,pageSize,shop.getAccessToken(), startTime1, endTime1); + } + pageIndex=1; + } + return AjaxResult.success(); + } + + public ResultVo pullOrder(String appKey,Long sellerId,Integer pageIndex, Integer pageSize, String token, Long startTime, Long endTime) { + + AccessTokenKsMerchantClient tokenKsMerchantClient = new AccessTokenKsMerchantClient(appKey); + KsMerchantOrderListRequest ksMerchantOrderListRequest = new KsMerchantOrderListRequest(); + + // common param + ksMerchantOrderListRequest.setAccessToken(token); + ksMerchantOrderListRequest.setUid(sellerId); + ksMerchantOrderListRequest.setApiMethodVersion(1); + // business param + ksMerchantOrderListRequest.setType(1); + ksMerchantOrderListRequest.setQueryType(2); + ksMerchantOrderListRequest.setSellerId(sellerId); + ksMerchantOrderListRequest.setCurrentPage(pageIndex); + ksMerchantOrderListRequest.setPageSize(pageSize); + ksMerchantOrderListRequest.setBeginTime(startTime*1000);//时间范围只能24小时 + ksMerchantOrderListRequest.setEndTime(endTime*1000); + ksMerchantOrderListRequest.setPcursor(""); + + // api invoke + try { + KsMerchantOrderListResponse response = tokenKsMerchantClient.execute(ksMerchantOrderListRequest); + if(!StringUtils.isEmpty(response.getErrorMsg()) && response.getResult()==24) + return ResultVo.error(ResultVoEnum.TokenFail.getIndex(), "异常:"+response.getErrorMsg()); + if(!StringUtils.isEmpty(response.getErrorMsg()) && response.getResult()!=24) + return ResultVo.error(ResultVoEnum.SystemException.getIndex(), "异常:"+response.getErrorMsg()); + + var list= response.getMerchantOrderListData().getOrderInfoList(); + for(var obj :list){ + KwaiOrder order= new KwaiOrder(); +// var address = JsonUtil.strToObject(obj.getAddress(),DcKwaiAddressVo.class); + order.setOid(obj.getOid()); + Long discountFee=obj.getDiscountFee(); + order.setDiscountfee(obj.getDiscountFee()>0 ? new BigDecimal(discountFee/100) : new BigDecimal(0)); + Long expressFee=obj.getExpressFee(); + order.setExpressfee(obj.getExpressFee()>0 ? new BigDecimal(expressFee.doubleValue() /100) : new BigDecimal(0)); + order.setNum(obj.getNum()); +// order.setConsignee(address.getConsignee()); +// order.setMobile(address.getMobile()); +// order.setPaytime(obj.getPayTime()>0 ? obj.getPayTime()/1000 : 0L); +// order.setBuyerRemark(obj.getRemark()); +// order.setSellerRemark(obj.getSellerNoteList().toString()); +// order.setStatus(obj.getStatus()); +// order.setRefund(obj.getRefund()); +// Long totalFee=obj.getTotalFee(); +// order.setTotalfee(totalFee>0 ? new BigDecimal(totalFee.doubleValue()/100) : new BigDecimal(0)); +// order.setProvince(address.getProvince()); +// order.setCity(address.getCity()); +// order.setDistrict(address.getDistrict()); +// StringBuilder sb= new StringBuilder(address.getProvince()).append(address.getCity()).append(address.getDistrict()).append(address.getAddress()); +// order.setAddress(sb.toString()); +// order.setCreatetime(obj.getCreateTime()>0 ? obj.getCreateTime()/1000 :0L); +// List items = new ArrayList<>(); +// for(var kwaiItem:obj.getOrderProductInfoList()){ +// DcKwaiOrdersItemEntity item=new DcKwaiOrdersItemEntity(); +// item.setItemid(kwaiItem.getItemId()); +// item.setItempicurl(kwaiItem.getItemPicUrl()); +// Long price=kwaiItem.getPrice(); +// item.setPrice(price>0 ? new BigDecimal(price.doubleValue()/100) : new BigDecimal(0)); +// item.setRefundId(kwaiItem.getRefundId()); +// item.setRefundStatus(kwaiItem.getRefundStatus()); +// item.setSkunick(StringUtils.isEmpty(kwaiItem.getSkuNick()) ? "" : kwaiItem.getSkuNick()); +// item.setItemtitle(kwaiItem.getItemTitle()); +// item.setNum(kwaiItem.getNum()); +// item.setGoodsspec(kwaiItem.getSkuDesc()); +// items.add(item); +// } +// order.setItems(items); +// var result= kwaiOrderService.editKwaiOrder(order); + log.info(order.getOid()+"更新:"); + } + return ResultVo.success(response.getMerchantOrderListData().getTotalSize()); + } catch (KsMerchantApiException e) { + return ResultVo.error(ResultVoEnum.Fail.getIndex(), "异常:"+e.getErrorMsg()); + } + } + /** + * 订单确认 + * @return + */ +// @RequestMapping(value = "/affirm_order", method = RequestMethod.POST) +// public ApiResult orderAffirm(@RequestBody OrderConfirmReq req){ +// if (req.getOrderId() == null || req.getOrderId() <= 0) +// return new ApiResult<>(ApiResultEnum.ParamsError.getIndex(), "参数错误,缺少orderId"); +// +// if (StringUtils.isEmpty(req.getClientId()))req.setClientId(0); +// +// if (StringUtils.isEmpty(req.getReceiver())) +// return new ApiResult<>(ApiResultEnum.ParamsError.getIndex(), "参数错误,缺少receiver"); +// if (StringUtils.isEmpty(req.getMobile())) +// return new ApiResult<>(ApiResultEnum.ParamsError.getIndex(), "参数错误,缺少mobile"); +// if (StringUtils.isEmpty(req.getAddress())) +// return new ApiResult<>(ApiResultEnum.ParamsError.getIndex(), "参数错误,缺少address"); +// var result = kwaiOrderService.kwaiOrderAffirm(req.getOrderId(),req.getClientId(),req.getReceiver(), req.getMobile(), req.getAddress(), req.getSellerMemo()); +// return new ApiResult<>(result.getCode(), result.getMsg()); +// } +// /** +// * 订单发货 +// * @param req +// * @return +// */ +// @RequestMapping(value = "/send_order", method = RequestMethod.POST) +// public ApiResult orderSend(@RequestBody DataRow req){ +// if(StringUtils.isEmpty(req.get("orderId")))return new ApiResult<>(EnumResultVo.ParamsError.getIndex(),"参数错误,订单id不能为空"); +// if(StringUtils.isEmpty(req.get("code")))return new ApiResult<>(EnumResultVo.ParamsError.getIndex(),"参数错误,快递单号不能为空"); +// Integer shopId = 13; +// var shop = shopService.getShop(shopId); +// var settingEntity = thirdSettingService.getEntity(shop.getType()); +// AccessTokenKsMerchantClient tokenKsMerchantClient = new AccessTokenKsMerchantClient(appKey); +// KsMerchantOrderLogisticsUpdateRequest ksMerchantLogisticsRequest=new KsMerchantOrderLogisticsUpdateRequest(); +// try { +// ksMerchantLogisticsRequest.setAccessToken(settingEntity.getAccess_token()); +// ksMerchantLogisticsRequest.setUid(sellerId); +// ksMerchantLogisticsRequest.setApiMethodVersion(1); +// ksMerchantLogisticsRequest.setOrderId(req.getLong("orderId")); +// ksMerchantLogisticsRequest.setExpressCode(EnumKwaiExpressCodeVo.getIndex(req.getString("name"))); +// ksMerchantLogisticsRequest.setExpressNo(req.getString("code")); +// ksMerchantLogisticsRequest.setSellerId(sellerId); +// var ksResponse = tokenKsMerchantClient.execute(ksMerchantLogisticsRequest); +// if(ksResponse.getResult()==1){ +// kwaiOrderService.updKwaiOrderStatus(req.getLong("orderId")); +// return new ApiResult<>(ApiResultEnum.SUCCESS.getIndex(), "成功"); +// }else return new ApiResult<>(ApiResultEnum.Fail.getIndex(), ksResponse.getErrorMsg()); +// }catch (KsMerchantApiException e) { +// return new ApiResult<>(ApiResultEnum.Fail.getIndex(), "异常:"+e.getErrorMsg()); +// } +// } +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/HomeController.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/HomeController.java new file mode 100644 index 00000000..9e7b2477 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/HomeController.java @@ -0,0 +1,4 @@ +package com.qihang.kwai.controller; + +public class HomeController { +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOAuthController.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOAuthController.java new file mode 100644 index 00000000..3c738a68 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOAuthController.java @@ -0,0 +1,73 @@ +package com.qihang.kwai.controller; + +import com.kuaishou.merchant.open.api.KsMerchantApiException; +import com.kuaishou.merchant.open.api.client.oauth.OauthAccessTokenKsClient; +import com.kuaishou.merchant.open.api.response.KsAccessTokenResponse; +import com.qihang.common.enums.EnumShopType; +import com.qihang.kwai.service.SysPlatformService; +import com.qihang.kwai.service.SysShopService; +import jakarta.servlet.http.HttpServletRequest; +import lombok.AllArgsConstructor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.io.IOException; + +/** + * 描述: + * 阿里授权Controller + * + * @author qlp + * @date 2019-09-12 14:13 + */ +@AllArgsConstructor +@RequestMapping("/kwai") +@RestController +public class KwaiOAuthController { + + private final SysPlatformService platformService; + private final SysShopService shopService; + private static String clientId="ks701717119425407331"; + private static String clientSecret="0qBrIYOPrqGb8SM9ouVx9w"; + private static Logger log = LoggerFactory.getLogger(KwaiOAuthController.class); + + + /** + * 调取授权页面 + * @return + * @throws IOException + * @throws InterruptedException + */ + @RequestMapping("/callback") + public String aliOAuth(HttpServletRequest req) throws IOException, InterruptedException { + String grantCode = req.getParameter("code"); + String shopId = req.getParameter("state"); + + OauthAccessTokenKsClient oauthAccessTokenKsClient = new OauthAccessTokenKsClient(clientId, clientSecret); + try { + KsAccessTokenResponse response = oauthAccessTokenKsClient.getAccessToken(grantCode); + Long expireIn=response.getExpiresIn(); + shopService.updateAccessToken(Integer.parseInt(shopId), response.getAccessToken(), response.getRefreshToken(),expireIn); + } catch (KsMerchantApiException e) { + e.printStackTrace(); + } + return "redirect:/"; + } + + @RequestMapping("/oauth2") + public String callback(@RequestParam Integer shopId) throws IOException, InterruptedException { + + var platform = platformService.getById(EnumShopType.KWAI.getIndex()); + String redirect_uri = platform.getRedirectUri(); + String appId= platform.getAppKey(); + + String url = "https://s.kwaixiaodian.com/oauth/authorize?response_type=code&app_id="+appId+"&scope=user_info,merchant_item,merchant_order,merchant_refund&redirect_uri="+redirect_uri+"&state="+shopId; + + return url; + } +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOrderController.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOrderController.java new file mode 100644 index 00000000..c31cdf3f --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/controller/KwaiOrderController.java @@ -0,0 +1,110 @@ +//package com.qihang.kwai.controller; +// +//import com.qihang.kwai.service.KwaiOrderService; +//import com.qihang.kwai.service.SysShopService; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Controller; +//import org.springframework.ui.Model; +//import org.springframework.util.StringUtils; +//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; +// +///** +// * 描述: +// * +// * @author qlp +// * @date 2019-11-13 14:44 +// */ +//@RestController +//@RequestMapping("/kwai") +//public class KwaiOrderController { +// @Autowired +// private SysShopService shopService; +// @Autowired +// private KwaiOrderService kwaiOrderService; +// /** +// * 订单列表 +// * @param model +// * @param request +// * @return +// */ +// @RequestMapping("/order_list") +// public String orderList(){ +// Integer shopId= 13; +// //查询店铺信息 +// var shop = shopService.getShop(shopId); +// model.addAttribute("shop",shop); +// +// model.addAttribute("menuId","order_list"); +// model.addAttribute("shopId",shopId); +// String orderNum=""; +// if (!StringUtils.isEmpty(request.getParameter("orderNum"))) { +// orderNum = request.getParameter("orderNum"); +// model.addAttribute("orderNum", orderNum); +// } +// String status=""; +// if (!StringUtils.isEmpty(request.getParameter("status"))) status = request.getParameter("status"); +// Integer startTime=null; +// if (!StringUtils.isEmpty(request.getParameter("startTime"))){ +// startTime = DateUtil.dateToStamp(request.getParameter("startTime")) ; +// model.addAttribute("startTime",request.getParameter("startTime")); +// } +// Integer endTime=null; +// if (!StringUtils.isEmpty(request.getParameter("endTime"))) { +// endTime = DateUtil.dateTimeToStamp(request.getParameter("endTime") + " 23:59:59"); +// model.addAttribute("endTime",request.getParameter("endTime")); +// } +// Integer pageIndex = 1, pageSize = DataConfigObject.getInstance().getPageSize(); +// if (!StringUtils.isEmpty(request.getParameter("page"))) { +// pageIndex = Integer.parseInt(request.getParameter("page")); +// } +// +// PagingResponse result =kwaiOrderService.getKwaiOrders(pageIndex,pageSize,orderNum,startTime,endTime,status); +// model.addAttribute("pageIndex", pageIndex); +// model.addAttribute("pageSize", pageSize); +// model.addAttribute("totalSize", result.getTotalSize()); +// model.addAttribute("lists", result.getList()); +// +// return "v3/order_list_kwai"; +// } +// /** +// * 订单详情(douyin) +// * +// * @param model +// * @param id +// * @param shopId +// * @param request +// * @return +// */ +// @RequestMapping(value = "/orderDetail", method = RequestMethod.GET) +// public String orderDetailTmall(Model model, @RequestParam Long id, @RequestParam Integer shopId, HttpServletRequest request) { +// +// DcKwaiOrderEntity orderDetail = kwaiOrderService.getOderDetailByOrderId(id); +// +// model.addAttribute("orderVo", orderDetail); +// +// //查询店铺信息 +// var shop = shopService.getShop(shopId); +// model.addAttribute("shop", shop); +// model.addAttribute("menuId", "order_list"); +// +// return "v3/order_detail_kwai"; +// } +// +// /** +// * 订单确认页面 +// * @param model +// * @param orderId +// * @param request +// * @return +// */ +// @RequestMapping("/order_confirm") +// public String orderList(Model model,@RequestParam Long orderId, HttpServletRequest request){ +// DcKwaiOrderEntity orderDetail = kwaiOrderService.getOderDetailByOrderId(orderId); +// model.addAttribute("orderVo", orderDetail); +// +// return "v3/order_confirm_kwai"; +// } +//} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrder.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrder.java new file mode 100644 index 00000000..d8aa34f6 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrder.java @@ -0,0 +1,139 @@ +package com.qihang.kwai.domain; + +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Data; + +/** + * 快手订单 + * @TableName kwai_order + */ +@Data +public class KwaiOrder implements Serializable { + /** + * dc订单id + */ + private Long id; + + /** + * 快手订单id + */ + private Long oid; + + /** + * 创建时间 + */ + private Long createtime; + + /** + * 折扣价格 + */ + private BigDecimal discountfee; + + /** + * 运费 + */ + private BigDecimal expressfee; + + /** + * sku数量 + */ + private Integer num; + + /** + * 收件人姓名 + */ + private String consignee; + + /** + * 收件人手机号 + */ + private String mobile; + + /** + * 支付时间 + */ + private Long paytime; + + /** + * 买家备注 + */ + private String buyerremark; + + /** + * 卖家备注 + */ + private String sellerremark; + + /** + * 订单状态 + */ + private Integer status; + + /** + * 是否退款 0未退款 1该订单申请过退款 + */ + private Integer refund; + + /** + * 子订单商品总价 + */ + private BigDecimal totalfee; + + /** + * 省 + */ + private String province; + + /** + * 市 + */ + private String city; + + /** + * 区 + */ + private String district; + + /** + * 详细地址 + */ + private String address; + + /** + * 快递公司 + */ + private String logisticscompany; + + /** + * 快递公司编码 + */ + private String logisticscompanycode; + + /** + * 快递单号 + */ + private String logisticscode; + + /** + * 订单审核状态(0待审核1已审核) + */ + private Integer auditstatus; + + /** + * 创建时间 + */ + private Long createon; + + /** + * 发货状态(0待出库1拣货中2已拣货3已出库4已发货) + */ + private Integer sendstatus; + + /** + * 发货时间(仓库真实发货时间) + */ + private Long sendtime; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrdersItem.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrdersItem.java new file mode 100644 index 00000000..e215f3c5 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/KwaiOrdersItem.java @@ -0,0 +1,93 @@ +package com.qihang.kwai.domain; + +import java.io.Serializable; +import lombok.Data; + +/** + * + * @TableName kwai_orders_item + */ +@Data +public class KwaiOrdersItem implements Serializable { + /** + * id,自增 + */ + private Long id; + + /** + * 快手子订单id + */ + private Long itemid; + + /** + * 订单ID + */ + private Long orderid; + + /** + * erp系统商品id + */ + private Integer erpgoodsid; + + /** + * erp系统商品规格id + */ + private Integer erpgoodsspecid; + + /** + * 商品名称 + */ + private String itemtitle; + + /** + * 商品图片 + */ + private String itempicurl; + + /** + * 商品编码 + */ + private String goodsnum; + + /** + * 商品规格 + */ + private String goodsspec; + + /** + * 商品规格编码 + */ + private String skunick; + + /** + * 商品单价 + */ + private Double price; + + /** + * 商品数量 + */ + private Integer num; + + /** + * 退货Id + */ + private Long refundid; + + /** + * 退货状态 + */ + private Integer refundstatus; + + /** + * + */ + private String remark; + + /** + * 是否赠品0:否1:是 + */ + private Integer isgift; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysPlatform.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysPlatform.java new file mode 100644 index 00000000..098642ca --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysPlatform.java @@ -0,0 +1,48 @@ +package com.qihang.kwai.domain; + +import java.io.Serializable; +import lombok.Data; + +/** + * + * @TableName sys_platform + */ +@Data +public class SysPlatform implements Serializable { + /** + * + */ + private Integer id; + + /** + * 平台名 + */ + private String name; + + /** + * 平台编码 + */ + private String code; + + /** + * + */ + private String appKey; + + /** + * + */ + private String appSecret; + + /** + * 平台回调uri + */ + private String redirectUri; + + /** + * 接口访问地址 + */ + private String serverUrl; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysShop.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysShop.java new file mode 100644 index 00000000..01c247ce --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/domain/SysShop.java @@ -0,0 +1,98 @@ +package com.qihang.kwai.domain; + +import java.io.Serializable; +import lombok.Data; + +/** + * 数据中心-店铺 + * @TableName sys_shop + */ +@Data +public class SysShop implements Serializable { + /** + * 主键 + */ + private Integer id; + + /** + * 店铺名 + */ + private String name; + + /** + * 对应第三方平台Id + */ + private Integer type; + + /** + * 店铺url + */ + private String url; + + /** + * 排序 + */ + private Integer sort; + + /** + * 状态(1正常2已删除) + */ + private Integer status; + + /** + * 更新时间 + */ + private Long modifyOn; + + /** + * 描述 + */ + private String remark; + + /** + * 第三方平台店铺id,淘宝天猫开放平台使用 + */ + private Long sellerId; + + /** + * Appkey + */ + private String appKey; + + /** + * Appsercet + */ + private String appSercet; + + /** + * 第三方平台sessionKey(access_token) + */ + private String accessToken; + + /** + * 到期 + */ + private Long expiresIn; + + /** + * access_token开始时间 + */ + private Long accessTokenBegin; + + /** + * 刷新token + */ + private String refreshToken; + + /** + * 刷新token过期时间 + */ + private Long refreshTokenTimeout; + + /** + * 请求url + */ + private String apiRequestUrl; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrderMapper.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrderMapper.java new file mode 100644 index 00000000..f5e45fda --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrderMapper.java @@ -0,0 +1,18 @@ +package com.qihang.kwai.mapper; + +import com.qihang.kwai.domain.KwaiOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author qilip +* @description 针对表【kwai_order(快手订单)】的数据库操作Mapper +* @createDate 2024-03-30 10:04:16 +* @Entity com.qihang.kwai.domain.KwaiOrder +*/ +public interface KwaiOrderMapper extends BaseMapper { + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrdersItemMapper.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrdersItemMapper.java new file mode 100644 index 00000000..7d727a0d --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/KwaiOrdersItemMapper.java @@ -0,0 +1,18 @@ +package com.qihang.kwai.mapper; + +import com.qihang.kwai.domain.KwaiOrdersItem; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author qilip +* @description 针对表【kwai_orders_item】的数据库操作Mapper +* @createDate 2024-03-30 10:04:16 +* @Entity com.qihang.kwai.domain.KwaiOrdersItem +*/ +public interface KwaiOrdersItemMapper extends BaseMapper { + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysPlatformMapper.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysPlatformMapper.java new file mode 100644 index 00000000..59b93847 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysPlatformMapper.java @@ -0,0 +1,18 @@ +package com.qihang.kwai.mapper; + +import com.qihang.kwai.domain.SysPlatform; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author qilip +* @description 针对表【sys_platform】的数据库操作Mapper +* @createDate 2024-03-30 10:04:16 +* @Entity com.qihang.kwai.domain.SysPlatform +*/ +public interface SysPlatformMapper extends BaseMapper { + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysShopMapper.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysShopMapper.java new file mode 100644 index 00000000..b809ca9d --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysShopMapper.java @@ -0,0 +1,18 @@ +package com.qihang.kwai.mapper; + +import com.qihang.kwai.domain.SysShop; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** +* @author qilip +* @description 针对表【sys_shop(数据中心-店铺)】的数据库操作Mapper +* @createDate 2024-03-30 10:04:16 +* @Entity com.qihang.kwai.domain.SysShop +*/ +public interface SysShopMapper extends BaseMapper { + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysUserMapper.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysUserMapper.java new file mode 100644 index 00000000..4fe879bd --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/mapper/SysUserMapper.java @@ -0,0 +1,130 @@ +package com.qihang.kwai.mapper; + +import com.qihang.security.entity.SysUser; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户表 数据层 + * + * @author qihang + */ +@Mapper +public interface SysUserMapper +{ + /** + * 根据条件分页查询用户列表 + * + * @param sysUser 用户信息 + * @return 用户信息集合信息 + */ + public List selectUserList(SysUser sysUser); + + /** + * 根据条件分页查询已配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectAllocatedList(SysUser user); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + public List selectUnallocatedList(SysUser user); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + public SysUser selectUserByUserName(String userName); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + public SysUser selectUserById(Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int insertUser(SysUser user); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + public int updateUser(SysUser user); + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + public int updateUserAvatar(@Param("userName") String userName, @Param("avatar") String avatar); + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + public int resetUserPwd(@Param("userName") String userName, @Param("password") String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + public int deleteUserById(Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + public int deleteUserByIds(Long[] userIds); + + /** + * 校验用户名称是否唯一 + * + * @param userName 用户名称 + * @return 结果 + */ + public SysUser checkUserNameUnique(String userName); + + /** + * 校验手机号码是否唯一 + * + * @param phonenumber 手机号码 + * @return 结果 + */ + public SysUser checkPhoneUnique(String phonenumber); + + /** + * 校验email是否唯一 + * + * @param email 用户邮箱 + * @return 结果 + */ + public SysUser checkEmailUnique(String email); +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrderService.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrderService.java new file mode 100644 index 00000000..954c137b --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrderService.java @@ -0,0 +1,13 @@ +package com.qihang.kwai.service; + +import com.qihang.kwai.domain.KwaiOrder; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author qilip +* @description 针对表【kwai_order(快手订单)】的数据库操作Service +* @createDate 2024-03-30 10:04:16 +*/ +public interface KwaiOrderService extends IService { + +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrdersItemService.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrdersItemService.java new file mode 100644 index 00000000..b46bca62 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/KwaiOrdersItemService.java @@ -0,0 +1,13 @@ +package com.qihang.kwai.service; + +import com.qihang.kwai.domain.KwaiOrdersItem; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author qilip +* @description 针对表【kwai_orders_item】的数据库操作Service +* @createDate 2024-03-30 10:04:16 +*/ +public interface KwaiOrdersItemService extends IService { + +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysPlatformService.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysPlatformService.java new file mode 100644 index 00000000..e964921e --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysPlatformService.java @@ -0,0 +1,13 @@ +package com.qihang.kwai.service; + +import com.qihang.kwai.domain.SysPlatform; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author qilip +* @description 针对表【sys_platform】的数据库操作Service +* @createDate 2024-03-30 10:04:16 +*/ +public interface SysPlatformService extends IService { + +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysShopService.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysShopService.java new file mode 100644 index 00000000..a4bf378c --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysShopService.java @@ -0,0 +1,13 @@ +package com.qihang.kwai.service; + +import com.qihang.kwai.domain.SysShop; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author qilip +* @description 针对表【sys_shop(数据中心-店铺)】的数据库操作Service +* @createDate 2024-03-30 10:04:16 +*/ +public interface SysShopService extends IService { + void updateAccessToken(Integer shopId,String accessToken,String refreshToken,Long expireIn); +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysUserServiceImpl.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysUserServiceImpl.java new file mode 100644 index 00000000..79b68876 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/SysUserServiceImpl.java @@ -0,0 +1,298 @@ +package com.qihang.kwai.service; + +import com.qihang.common.common.ServiceException; +import com.qihang.common.constant.UserConstants; +import com.qihang.common.utils.StringUtils; +import com.qihang.kwai.mapper.SysUserMapper; +import com.qihang.security.entity.SysUser; +import com.qihang.security.service.ISysUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 用户 业务层处理 + * + * @author qihang + */ +@Service +public class SysUserServiceImpl implements ISysUserService +{ + private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); + + @Autowired + private SysUserMapper userMapper; + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUserList(SysUser user) + { + return userMapper.selectUserList(user); + } + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectAllocatedList(SysUser user) + { + return userMapper.selectAllocatedList(user); + } + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUnallocatedList(SysUser user) + { + return userMapper.selectUnallocatedList(user); + } + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + @Override + public SysUser selectUserByUserName(String userName) + { + return userMapper.selectUserByUserName(userName); + } + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + @Override + public SysUser selectUserById(Long userId) + { + return userMapper.selectUserById(userId); + } + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean checkUserNameUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkPhoneUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * @return + */ + @Override + public boolean checkEmailUnique(SysUser user) + { + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkEmailUnique(user.getEmail()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) + { + return UserConstants.NOT_UNIQUE; + } + return UserConstants.UNIQUE; + } + + /** + * 校验用户是否允许操作 + * + * @param user 用户信息 + */ + @Override + public void checkUserAllowed(SysUser user) + { + if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) + { + throw new ServiceException("不允许操作超级管理员用户"); + } + } + + /** + * 新增保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int insertUser(SysUser user) + { + // 新增用户信息 + int rows = userMapper.insertUser(user); +// // 新增用户岗位关联 +// insertUserPost(user); +// // 新增用户与角色管理 +// insertUserRole(user); + return rows; + } + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean registerUser(SysUser user) + { + return userMapper.insertUser(user) > 0; + } + + /** + * 修改保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional + public int updateUser(SysUser user) + { + Long userId = user.getUserId(); +// // 删除用户与角色关联 +// userRoleMapper.deleteUserRoleByUserId(userId); +// // 新增用户与角色管理 +// insertUserRole(user); +// // 删除用户与岗位关联 +// userPostMapper.deleteUserPostByUserId(userId); + // 新增用户与岗位管理 +// insertUserPost(user); + return userMapper.updateUser(user); + } + + + /** + * 修改用户状态 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserStatus(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int updateUserProfile(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 修改用户头像 + * + * @param userName 用户名 + * @param avatar 头像地址 + * @return 结果 + */ + @Override + public boolean updateUserAvatar(String userName, String avatar) + { + return userMapper.updateUserAvatar(userName, avatar) > 0; + } + + /** + * 重置用户密码 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public int resetPwd(SysUser user) + { + return userMapper.updateUser(user); + } + + /** + * 重置用户密码 + * + * @param userName 用户名 + * @param password 密码 + * @return 结果 + */ + @Override + public int resetUserPwd(String userName, String password) + { + return userMapper.resetUserPwd(userName, password); + } + + + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + @Transactional + public int deleteUserById(Long userId) + { +// // 删除用户与角色关联 +// userRoleMapper.deleteUserRoleByUserId(userId); +// // 删除用户与岗位表 +// userPostMapper.deleteUserPostByUserId(userId); + return userMapper.deleteUserById(userId); + } + + @Override + public void checkUserDataScope(Long userId) { + + } + +} diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrderServiceImpl.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrderServiceImpl.java new file mode 100644 index 00000000..7e673844 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrderServiceImpl.java @@ -0,0 +1,22 @@ +package com.qihang.kwai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qihang.kwai.domain.KwaiOrder; +import com.qihang.kwai.service.KwaiOrderService; +import com.qihang.kwai.mapper.KwaiOrderMapper; +import org.springframework.stereotype.Service; + +/** +* @author qilip +* @description 针对表【kwai_order(快手订单)】的数据库操作Service实现 +* @createDate 2024-03-30 10:04:16 +*/ +@Service +public class KwaiOrderServiceImpl extends ServiceImpl + implements KwaiOrderService{ + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrdersItemServiceImpl.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrdersItemServiceImpl.java new file mode 100644 index 00000000..76179f80 --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/KwaiOrdersItemServiceImpl.java @@ -0,0 +1,22 @@ +package com.qihang.kwai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qihang.kwai.domain.KwaiOrdersItem; +import com.qihang.kwai.service.KwaiOrdersItemService; +import com.qihang.kwai.mapper.KwaiOrdersItemMapper; +import org.springframework.stereotype.Service; + +/** +* @author qilip +* @description 针对表【kwai_orders_item】的数据库操作Service实现 +* @createDate 2024-03-30 10:04:16 +*/ +@Service +public class KwaiOrdersItemServiceImpl extends ServiceImpl + implements KwaiOrdersItemService{ + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysPlatformServiceImpl.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysPlatformServiceImpl.java new file mode 100644 index 00000000..e1c4551f --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysPlatformServiceImpl.java @@ -0,0 +1,22 @@ +package com.qihang.kwai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qihang.kwai.domain.SysPlatform; +import com.qihang.kwai.service.SysPlatformService; +import com.qihang.kwai.mapper.SysPlatformMapper; +import org.springframework.stereotype.Service; + +/** +* @author qilip +* @description 针对表【sys_platform】的数据库操作Service实现 +* @createDate 2024-03-30 10:04:16 +*/ +@Service +public class SysPlatformServiceImpl extends ServiceImpl + implements SysPlatformService{ + +} + + + + diff --git a/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysShopServiceImpl.java b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysShopServiceImpl.java new file mode 100644 index 00000000..db8d70dd --- /dev/null +++ b/open-api/kwai-api/src/main/java/com/qihang/kwai/service/impl/SysShopServiceImpl.java @@ -0,0 +1,34 @@ +package com.qihang.kwai.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qihang.kwai.domain.SysShop; +import com.qihang.kwai.service.SysShopService; +import com.qihang.kwai.mapper.SysShopMapper; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* @author qilip +* @description 针对表【sys_shop(数据中心-店铺)】的数据库操作Service实现 +* @createDate 2024-03-30 10:04:16 +*/ +@AllArgsConstructor +@Service +public class SysShopServiceImpl extends ServiceImpl + implements SysShopService{ + private final SysShopMapper mapper; + + @Override + public void updateAccessToken(Integer shopId, String accessToken, String refreshToken, Long expireIn) { + SysShop shop =new SysShop(); + shop.setId(shopId); + shop.setAccessToken(accessToken); + shop.setRefreshToken(refreshToken); + shop.setExpiresIn(expireIn); + mapper.updateById(shop); + } +} + + + + diff --git a/open-api/kwai-api/src/main/resources/application.yml b/open-api/kwai-api/src/main/resources/application.yml new file mode 100644 index 00000000..7b775ac2 --- /dev/null +++ b/open-api/kwai-api/src/main/resources/application.yml @@ -0,0 +1,23 @@ +spring: + cloud: + nacos: +# serverAddr: 127.0.0.1:8848 + discovery: + server-addr: 127.0.0.1:8848 + config: + server-addr: 127.0.0.1:8848 + config: + import: + - nacos:qihang-oms.yaml?refresh=true + application: + name: kwai-api + +server: + port: 8088 + + +mybatis-plus: + mapper-locations: classpath*:mapper/**/*Mapper.xml + type-aliases-package: com.qihang.kwai.domain;com.qihang.security.entity; + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启sql日志 \ No newline at end of file diff --git a/open-api/kwai-api/src/main/resources/mapper/KwaiOrderMapper.xml b/open-api/kwai-api/src/main/resources/mapper/KwaiOrderMapper.xml new file mode 100644 index 00000000..27da4cce --- /dev/null +++ b/open-api/kwai-api/src/main/resources/mapper/KwaiOrderMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,oid,createTime, + discountFee,expressFee,num, + consignee,mobile,payTime, + buyerRemark,sellerRemark,status, + refund,totalFee,province, + city,district,address, + logisticsCompany,logisticsCompanyCode,logisticsCode, + auditStatus,createOn,sendStatus, + sendTime + + diff --git a/open-api/kwai-api/src/main/resources/mapper/KwaiOrdersItemMapper.xml b/open-api/kwai-api/src/main/resources/mapper/KwaiOrdersItemMapper.xml new file mode 100644 index 00000000..82dc135c --- /dev/null +++ b/open-api/kwai-api/src/main/resources/mapper/KwaiOrdersItemMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id,itemId,orderId, + erpGoodsId,erpGoodsSpecId,itemTitle, + itemPicUrl,goodsNum,goodsSpec, + skuNick,price,num, + refundId,refundStatus,remark, + isGift + + diff --git a/open-api/kwai-api/src/main/resources/mapper/SysPlatformMapper.xml b/open-api/kwai-api/src/main/resources/mapper/SysPlatformMapper.xml new file mode 100644 index 00000000..a0504a1e --- /dev/null +++ b/open-api/kwai-api/src/main/resources/mapper/SysPlatformMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + id,name,code, + app_key,app_secret,redirect_uri, + server_url + + diff --git a/open-api/kwai-api/src/main/resources/mapper/SysShopMapper.xml b/open-api/kwai-api/src/main/resources/mapper/SysShopMapper.xml new file mode 100644 index 00000000..2fb88de6 --- /dev/null +++ b/open-api/kwai-api/src/main/resources/mapper/SysShopMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + id,name,type, + url,sort,status, + modify_on,remark,seller_id, + app_key,app_sercet,access_token, + expires_in,access_token_begin,refresh_token, + refresh_token_timeout,api_request_url + + diff --git a/open-api/kwai-api/src/main/resources/mapper/SysUserMapper.xml b/open-api/kwai-api/src/main/resources/mapper/SysUserMapper.xml new file mode 100644 index 00000000..3b4086a0 --- /dev/null +++ b/open-api/kwai-api/src/main/resources/mapper/SysUserMapper.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark + + from sys_user u + + + + + + + + + + + + + + + + + + + + insert into sys_user( + user_id, + dept_id, + user_name, + nick_name, + email, + avatar, + phonenumber, + sex, + password, + status, + create_by, + remark, + create_time + )values( + #{userId}, + #{deptId}, + #{userName}, + #{nickName}, + #{email}, + #{avatar}, + #{phonenumber}, + #{sex}, + #{password}, + #{status}, + #{createBy}, + #{remark}, + current_timestamp() + ) + + + + update sys_user + + dept_id = #{deptId}, + user_name = #{userName}, + nick_name = #{nickName}, + email = #{email}, + phonenumber = #{phonenumber}, + sex = #{sex}, + avatar = #{avatar}, + password = #{password}, + status = #{status}, + login_ip = #{loginIp}, + login_date = #{loginDate}, + update_by = #{updateBy}, + remark = #{remark}, + update_time = current_timestamp() + + where user_id = #{userId} + + + + update sys_user set status = #{status} where user_id = #{userId} + + + + update sys_user set avatar = #{avatar} where user_name = #{userName} + + + + update sys_user set password = #{password} where user_name = #{userName} + + + + update sys_user set del_flag = '2' where user_id = #{userId} + + + + update sys_user set del_flag = '2' where user_id in + + #{userId} + + + + \ No newline at end of file diff --git a/open-api/kwai-api/src/test/java/com/qihang/kwai/AppTest.java b/open-api/kwai-api/src/test/java/com/qihang/kwai/AppTest.java new file mode 100644 index 00000000..2b43d55b --- /dev/null +++ b/open-api/kwai-api/src/test/java/com/qihang/kwai/AppTest.java @@ -0,0 +1,38 @@ +package com.qihang.kwai; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/wei-api/pom.xml b/open-api/pom.xml similarity index 88% rename from wei-api/pom.xml rename to open-api/pom.xml index 5de4e270..b1adb1df 100644 --- a/wei-api/pom.xml +++ b/open-api/pom.xml @@ -1,24 +1,23 @@ - + 4.0.0 - - - - - org.springframework.boot spring-boot-starter-parent 3.0.2 - com.qihang.wei - wei-api - jar - - wei-api - http://maven.apache.org + com.qihang + open-api + 1.0.0 + pom + + wei-api + kwai-api + 17 UTF-8 @@ -27,7 +26,6 @@ 2022.0.0.0 0.11.5 - org.springframework.boot @@ -100,4 +98,4 @@ - + \ No newline at end of file diff --git a/wei-api/.gitignore b/open-api/wei-api/.gitignore similarity index 100% rename from wei-api/.gitignore rename to open-api/wei-api/.gitignore diff --git a/open-api/wei-api/pom.xml b/open-api/wei-api/pom.xml new file mode 100644 index 00000000..2bc4c491 --- /dev/null +++ b/open-api/wei-api/pom.xml @@ -0,0 +1,98 @@ + + 4.0.0 + + com.qihang + open-api + 1.0.0 + + + com.qihang.wei + wei-api + jar + + wei-api + http://maven.apache.org + + + 17 + UTF-8 + UTF-8 + 3.0.2 + 2022.0.0.0 + 0.11.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wei-api/src/main/java/com/qihang/wei/WeiApi.java b/open-api/wei-api/src/main/java/com/qihang/wei/WeiApi.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/WeiApi.java rename to open-api/wei-api/src/main/java/com/qihang/wei/WeiApi.java diff --git a/wei-api/src/main/java/com/qihang/wei/config/MybatisPlusConfig.java b/open-api/wei-api/src/main/java/com/qihang/wei/config/MybatisPlusConfig.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/config/MybatisPlusConfig.java rename to open-api/wei-api/src/main/java/com/qihang/wei/config/MybatisPlusConfig.java diff --git a/wei-api/src/main/java/com/qihang/wei/controller/GoodsApiController.java b/open-api/wei-api/src/main/java/com/qihang/wei/controller/GoodsApiController.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/controller/GoodsApiController.java rename to open-api/wei-api/src/main/java/com/qihang/wei/controller/GoodsApiController.java diff --git a/wei-api/src/main/java/com/qihang/wei/controller/HomeController.java b/open-api/wei-api/src/main/java/com/qihang/wei/controller/HomeController.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/controller/HomeController.java rename to open-api/wei-api/src/main/java/com/qihang/wei/controller/HomeController.java diff --git a/wei-api/src/main/java/com/qihang/wei/controller/OrderApiController.java b/open-api/wei-api/src/main/java/com/qihang/wei/controller/OrderApiController.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/controller/OrderApiController.java rename to open-api/wei-api/src/main/java/com/qihang/wei/controller/OrderApiController.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/OGoodsSku.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/OGoodsSku.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/OGoodsSku.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/OGoodsSku.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/SysPlatform.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/SysPlatform.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/SysPlatform.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/SysPlatform.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/SysShop.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/SysShop.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/SysShop.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/SysShop.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/WeiGoods.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiGoods.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/WeiGoods.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiGoods.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/WeiGoodsSku.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiGoodsSku.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/WeiGoodsSku.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiGoodsSku.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/WeiOrder.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiOrder.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/WeiOrder.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiOrder.java diff --git a/wei-api/src/main/java/com/qihang/wei/domain/WeiOrderItem.java b/open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiOrderItem.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/domain/WeiOrderItem.java rename to open-api/wei-api/src/main/java/com/qihang/wei/domain/WeiOrderItem.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/OGoodsSkuMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/OGoodsSkuMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/OGoodsSkuMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/OGoodsSkuMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/SysPlatformMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysPlatformMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/SysPlatformMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysPlatformMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/SysShopMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysShopMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/SysShopMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysShopMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/SysUserMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysUserMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/SysUserMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/SysUserMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsSkuMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsSkuMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsSkuMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiGoodsSkuMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderItemMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderItemMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderItemMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderItemMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderMapper.java b/open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderMapper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderMapper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/mapper/WeiOrderMapper.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/ApiCommon.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/ApiCommon.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/ApiCommon.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/ApiCommon.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/OrderApiHelper.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/OrderApiHelper.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/OrderApiHelper.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/OrderApiHelper.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/PullRequest.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/PullRequest.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/PullRequest.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/PullRequest.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/bo/CreateTimeRangeBo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/CreateTimeRangeBo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/bo/CreateTimeRangeBo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/CreateTimeRangeBo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsDetailApiBo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsDetailApiBo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsDetailApiBo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsDetailApiBo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsListApiBo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsListApiBo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsListApiBo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/GoodsListApiBo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderDetailBo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderDetailBo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderDetailBo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderDetailBo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderListBo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderListBo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderListBo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/bo/OrderListBo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/service/GoodsApiService.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/GoodsApiService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/service/GoodsApiService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/GoodsApiService.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/service/OrderApiService.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/OrderApiService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/service/OrderApiService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/OrderApiService.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/service/ShopInfoApiService.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/ShopInfoApiService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/service/ShopInfoApiService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/ShopInfoApiService.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/service/TokenApiService.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/TokenApiService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/service/TokenApiService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/service/TokenApiService.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/BaseResVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/BaseResVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/BaseResVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/BaseResVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsDetailVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsDetailVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsDetailVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsDetailVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsListVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsListVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsListVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/GoodsListVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderDetailVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderDetailVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderDetailVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderDetailVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderListVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderListVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderListVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderListVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliverInfoAddress.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliverInfoAddress.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliverInfoAddress.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliverInfoAddress.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliveryInfo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliveryInfo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliveryInfo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDeliveryInfo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetail.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetail.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetail.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetail.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetailProductInfo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetailProductInfo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetailProductInfo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/OrderVoDetailProductInfo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductSkuVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductSkuVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductSkuVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductSkuVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ProductVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopApiResultVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopApiResultVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopApiResultVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopApiResultVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopInfoVo.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopInfoVo.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopInfoVo.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/ShopInfoVo.java diff --git a/wei-api/src/main/java/com/qihang/wei/openApi/vo/Token.java b/open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/Token.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/openApi/vo/Token.java rename to open-api/wei-api/src/main/java/com/qihang/wei/openApi/vo/Token.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/OGoodsSkuService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/OGoodsSkuService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/OGoodsSkuService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/OGoodsSkuService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/SysPlatformService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/SysPlatformService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/SysPlatformService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/SysPlatformService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/SysShopService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/SysShopService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/SysShopService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/SysShopService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/SysUserServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/SysUserServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/SysUserServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/SysUserServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/WeiGoodsService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsSkuService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsSkuService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/WeiGoodsSkuService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/WeiGoodsSkuService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/WeiOrderItemService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/WeiOrderItemService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/WeiOrderItemService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/WeiOrderItemService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/WeiOrderService.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/WeiOrderService.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/WeiOrderService.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/WeiOrderService.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/OGoodsSkuServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/OGoodsSkuServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/OGoodsSkuServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/OGoodsSkuServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/SysPlatformServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/SysPlatformServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/SysPlatformServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/SysPlatformServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/SysShopServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/SysShopServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/SysShopServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/SysShopServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsSkuServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsSkuServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsSkuServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiGoodsSkuServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderItemServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderItemServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderItemServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderItemServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderServiceImpl.java b/open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderServiceImpl.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderServiceImpl.java rename to open-api/wei-api/src/main/java/com/qihang/wei/service/impl/WeiOrderServiceImpl.java diff --git a/wei-api/src/main/java/com/qihang/wei/utils/RemoteUtil.java b/open-api/wei-api/src/main/java/com/qihang/wei/utils/RemoteUtil.java similarity index 100% rename from wei-api/src/main/java/com/qihang/wei/utils/RemoteUtil.java rename to open-api/wei-api/src/main/java/com/qihang/wei/utils/RemoteUtil.java diff --git a/wei-api/src/main/resources/application.yml b/open-api/wei-api/src/main/resources/application.yml similarity index 100% rename from wei-api/src/main/resources/application.yml rename to open-api/wei-api/src/main/resources/application.yml diff --git a/wei-api/src/main/resources/mapper/OGoodsSkuMapper.xml b/open-api/wei-api/src/main/resources/mapper/OGoodsSkuMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/OGoodsSkuMapper.xml rename to open-api/wei-api/src/main/resources/mapper/OGoodsSkuMapper.xml diff --git a/wei-api/src/main/resources/mapper/SysPlatformMapper.xml b/open-api/wei-api/src/main/resources/mapper/SysPlatformMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/SysPlatformMapper.xml rename to open-api/wei-api/src/main/resources/mapper/SysPlatformMapper.xml diff --git a/wei-api/src/main/resources/mapper/SysShopMapper.xml b/open-api/wei-api/src/main/resources/mapper/SysShopMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/SysShopMapper.xml rename to open-api/wei-api/src/main/resources/mapper/SysShopMapper.xml diff --git a/wei-api/src/main/resources/mapper/SysUserMapper.xml b/open-api/wei-api/src/main/resources/mapper/SysUserMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/SysUserMapper.xml rename to open-api/wei-api/src/main/resources/mapper/SysUserMapper.xml diff --git a/wei-api/src/main/resources/mapper/WeiGoodsMapper.xml b/open-api/wei-api/src/main/resources/mapper/WeiGoodsMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/WeiGoodsMapper.xml rename to open-api/wei-api/src/main/resources/mapper/WeiGoodsMapper.xml diff --git a/wei-api/src/main/resources/mapper/WeiGoodsSkuMapper.xml b/open-api/wei-api/src/main/resources/mapper/WeiGoodsSkuMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/WeiGoodsSkuMapper.xml rename to open-api/wei-api/src/main/resources/mapper/WeiGoodsSkuMapper.xml diff --git a/wei-api/src/main/resources/mapper/WeiOrderItemMapper.xml b/open-api/wei-api/src/main/resources/mapper/WeiOrderItemMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/WeiOrderItemMapper.xml rename to open-api/wei-api/src/main/resources/mapper/WeiOrderItemMapper.xml diff --git a/wei-api/src/main/resources/mapper/WeiOrderMapper.xml b/open-api/wei-api/src/main/resources/mapper/WeiOrderMapper.xml similarity index 100% rename from wei-api/src/main/resources/mapper/WeiOrderMapper.xml rename to open-api/wei-api/src/main/resources/mapper/WeiOrderMapper.xml diff --git a/wei-api/src/test/java/com/qihang/wei/AppTest.java b/open-api/wei-api/src/test/java/com/qihang/wei/AppTest.java similarity index 100% rename from wei-api/src/test/java/com/qihang/wei/AppTest.java rename to open-api/wei-api/src/test/java/com/qihang/wei/AppTest.java diff --git a/pom.xml b/pom.xml index 3c25df3e..8e702a6a 100644 --- a/pom.xml +++ b/pom.xml @@ -19,8 +19,7 @@ oms-api pdd-api dou-api - wei-api - + open-api