Browse Source

更新商户端

gaohp 1 year ago
parent
commit
4b0d984af0
100 changed files with 852 additions and 102 deletions
  1. 22 0
      feifan-framework/feifan-common/src/main/java/cn/newfeifan/mall/framework/common/util/validation/ValidationUtils.java
  2. 1 34
      feifan-framework/feifan-spring-boot-starter-web/src/main/java/cn/newfeifan/mall/framework/banner/core/BannerApplicationRunner.java
  3. 1 0
      feifan-framework/pom.xml
  4. 7 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/ProductCommentController.java
  5. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentCreateReqVO.java
  6. 4 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentPageReqVO.java
  7. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentRespVO.java
  8. 4 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertyPageReqVO.java
  9. 3 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertyRespVO.java
  10. 3 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertySaveReqVO.java
  11. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValuePageReqVO.java
  12. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValueRespVO.java
  13. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValueSaveReqVO.java
  14. 9 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/ProductSpuController.java
  15. 13 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSkuRespVO.java
  16. 12 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSkuSaveReqVO.java
  17. 20 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java
  18. 12 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuRespVO.java
  19. 12 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuSaveReqVO.java
  20. 4 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuSimpleRespVO.java
  21. 4 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java
  22. 3 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/comment/ProductCommentDO.java
  23. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/property/ProductPropertyDO.java
  24. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/property/ProductPropertyValueDO.java
  25. 13 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/sku/ProductSkuDO.java
  26. 14 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/spu/ProductSpuDO.java
  27. 1 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/comment/ProductCommentMapper.java
  28. 1 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/property/ProductPropertyMapper.java
  29. 1 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/property/ProductPropertyValueMapper.java
  30. 6 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/sku/ProductSkuMapper.java
  31. 2 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/spu/ProductSpuMapper.java
  32. 1 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/sku/ProductSkuService.java
  33. 7 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/sku/ProductSkuServiceImpl.java
  34. 9 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuService.java
  35. 30 0
      feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java
  36. 7 0
      feifan-module-mall/feifan-module-promotion-api/src/main/java/cn/newfeifan/mall/module/promotion/enums/ErrorCodeConstants.java
  37. 10 0
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/controller/admin/diy/DiyTemplateController.java
  38. 7 3
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/controller/admin/diy/vo/template/DiyTemplateCreateReqVO.java
  39. 2 0
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/convert/diy/DiyTemplateConvert.java
  40. 5 1
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/dal/dataobject/diy/DiyTemplateDO.java
  41. 1 4
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/service/diy/DiyTemplateService.java
  42. 3 4
      feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/service/diy/DiyTemplateServiceImpl.java
  43. 17 0
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/delivery/DeliveryTypeEnum.java
  44. 2 1
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/order/TradeOrderStatusEnum.java
  45. 2 1
      feifan-module-mall/feifan-module-trade-biz/pom.xml
  46. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleBaseVO.java
  47. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleDetailRespVO.java
  48. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSalePageReqVO.java
  49. 3 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressBaseVO.java
  50. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressExportReqVO.java
  51. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressPageReqVO.java
  52. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplatePageReqVO.java
  53. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpStoreBaseVO.java
  54. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpStorePageReqVO.java
  55. 76 5
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java
  56. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java
  57. 4 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderDeliveryReqVO.java
  58. 45 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderDetailRespVO.java
  59. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java
  60. 5 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderPageItemRespVO.java
  61. 10 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderPageReqVO.java
  62. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java
  63. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java
  64. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderSettlementReqVO.java
  65. 2 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java
  66. 1 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java
  67. 5 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/order/TradeOrderConvert.java
  68. 4 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/aftersale/AfterSaleDO.java
  69. 3 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateDO.java
  70. 1 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreDO.java
  71. 35 31
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java
  72. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java
  73. 2 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/delivery/DeliveryExpressTemplateMapper.java
  74. 1 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/delivery/DeliveryPickUpStoreMapper.java
  75. 23 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java
  76. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java
  77. 7 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java
  78. 34 0
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java
  79. 41 1
      feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java
  80. 35 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserBaseVO.java
  81. 36 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserPageReqVO.java
  82. 39 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserRespVO.java
  83. 47 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java
  84. 2 0
      feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/mysql/user/MemberUserMapper.java
  85. 7 0
      feifan-module-pay/feifan-module-pay-biz/pom.xml
  86. 10 2
      feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/admin/order/PayOrderController.java
  87. 9 1
      feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/admin/order/vo/PayOrderPageItemRespVO.java
  88. 5 0
      feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/convert/order/PayOrderConvert.java
  89. 7 0
      feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderService.java
  90. 6 0
      feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderServiceImpl.java
  91. 2 0
      feifan-module-system/feifan-module-system-api/src/main/java/cn/newfeifan/mall/module/system/enums/permission/RoleCodeEnum.java
  92. 4 0
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java
  93. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuRespVO.java
  94. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuSaveVO.java
  95. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java
  96. 3 0
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RolePageReqVO.java
  97. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleRespVO.java
  98. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleSaveReqVO.java
  99. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java
  100. 2 1
      feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleUpdateStatusReqVO.java

+ 22 - 0
feifan-framework/feifan-common/src/main/java/cn/newfeifan/mall/framework/common/util/validation/ValidationUtils.java

@@ -2,6 +2,9 @@ package cn.newfeifan.mall.framework.common.util.validation;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
+import cn.newfeifan.mall.framework.common.enums.UserTypeEnum;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
 import org.springframework.util.StringUtils;
 
 import javax.validation.ConstraintViolation;
@@ -11,6 +14,10 @@ import javax.validation.Validator;
 import java.util.Set;
 import java.util.regex.Pattern;
 
+import static cn.newfeifan.mall.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
+import static cn.newfeifan.mall.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.error;
+
 /**
  * 校验工具类
  *
@@ -52,4 +59,19 @@ public class ValidationUtils {
         }
     }
 
+//    /**
+//     * 判断是否是管理员账号, 不是管理员,没有权限
+//     */
+//    public static CommonResult checkAdmin(LoginUser loginUser){
+//        if (loginUser==null){
+//            return error(UNAUTHORIZED);
+//        }
+//        // 添加校验, 如果是平台用户的话, 就不能修改商户信息
+//        if (ObjectUtil.notEqual(loginUser.getUserType(), UserTypeEnum.ADMIN.getValue())) {
+//            return error(FORBIDDEN);
+//        }
+//        return
+//    }
+
+
 }

+ 1 - 34
feifan-framework/feifan-spring-boot-starter-web/src/main/java/cn/newfeifan/mall/framework/banner/core/BannerApplicationRunner.java

@@ -20,41 +20,8 @@ public class BannerApplicationRunner implements ApplicationRunner {
     public void run(ApplicationArguments args) {
         ThreadUtil.execute(() -> {
             ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延迟 1 秒,保证输出到结尾
-            log.info("\n----------------------------------------------------------\n\t" +
-                            "项目启动成功!\n\t" +
-                            "接口文档: \t{} \n\t" +
-                            "开发文档: \t{} \n\t" +
-                            "视频教程: \t{} \n" +
-                            "----------------------------------------------------------",
-                    "https://doc.iocoder.cn/api-doc/",
-                    "https://doc.iocoder.cn",
-                    "https://www.zhongxing.cn/02Yf6M7Qn");
-
-            // 数据报表
-            if (isNotPresent("cn.newfeifan.mall.module.report.framework.security.config.SecurityConfiguration")) {
-                System.out.println("[报表模块 feifan-module-report - 已禁用][参考 https://doc.iocoder.cn/report/ 开启]");
-            }
-            // 工作流
-            if (isNotPresent("cn.newfeifan.mall.framework.flowable.config.FeifanFlowableConfiguration")) {
-                System.out.println("[工作流模块 feifan-module-bpm - 已禁用][参考 https://doc.iocoder.cn/bpm/ 开启]");
-            }
-            // 微信公众号
-            if (isNotPresent("cn.newfeifan.mall.module.mp.framework.mp.config.MpConfiguration")) {
-                System.out.println("[微信公众号 feifan-module-mp - 已禁用][参考 https://doc.iocoder.cn/mp/build/ 开启]");
-            }
-            // 商城系统
-            if (isNotPresent("cn.newfeifan.mall.module.trade.framework.web.config.TradeWebConfiguration")) {
-                System.out.println("[商城系统 feifan-module-mall - 已禁用][参考 https://doc.iocoder.cn/mall/build/ 开启]");
-            }
-            // 支付平台
-            if (isNotPresent("cn.newfeifan.mall.module.pay.framework.pay.config.PayConfiguration")) {
-                System.out.println("[支付系统 feifan-module-pay - 已禁用][参考 https://doc.iocoder.cn/pay/build/ 开启]");
-            }
+            log.info("\n----------------------------------------------------------\n\t" + "项目启动成功!\n\t" + "----------------------------------------------------------");
         });
     }
 
-    private static boolean isNotPresent(String className) {
-        return !ClassUtils.isPresent(className, ClassUtils.getDefaultClassLoader());
-    }
-
 }

+ 1 - 0
feifan-framework/pom.xml

@@ -36,6 +36,7 @@
         <module>feifan-spring-boot-starter-flowable</module>
         <module>feifan-spring-boot-starter-captcha</module>
         <module>feifan-spring-boot-starter-websocket</module>
+        <module>feifan-spring-boot-starter-biz-shop-tenant</module>
     </modules>
 
     <artifactId>feifan-framework</artifactId>

+ 7 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/ProductCommentController.java

@@ -34,6 +34,13 @@ public class ProductCommentController {
         PageResult<ProductCommentDO> pageResult = productCommentService.getCommentPage(pageVO);
         return success(BeanUtils.toBean(pageResult, ProductCommentRespVO.class));
     }
+    @GetMapping("/page_order_id")
+    @Operation(summary = "新增接口20240229-获得商品评价分页 传输orderId即可")
+    @PreAuthorize("@ss.hasPermission('product:comment:query')")
+    public CommonResult<PageResult<ProductCommentRespVO>> getCommentPageByOrderId(@Valid ProductCommentPageReqVO pageVO) {
+        PageResult<ProductCommentDO> pageResult = productCommentService.getCommentPage(pageVO);
+        return success(BeanUtils.toBean(pageResult, ProductCommentRespVO.class));
+    }
 
     @PutMapping("/update-visible")
     @Operation(summary = "显示 / 隐藏评论")

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentCreateReqVO.java

@@ -46,4 +46,6 @@ public class ProductCommentCreateReqVO {
     @Size(max = 9, message = "评论图片地址数组长度不能超过 9 张")
     private List<String> picUrls;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 4 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentPageReqVO.java

@@ -9,6 +9,7 @@ import lombok.EqualsAndHashCode;
 import lombok.ToString;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -23,6 +24,7 @@ public class ProductCommentPageReqVO extends PageParam {
     private String userNickname;
 
     @Schema(description = "交易订单编号", example = "24428")
+    @NotNull
     private Long orderId;
 
     @Schema(description = "商品SPU编号", example = "29502")
@@ -42,4 +44,6 @@ public class ProductCommentPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/comment/vo/ProductCommentRespVO.java

@@ -79,4 +79,6 @@ public class ProductCommentRespVO {
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 4 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertyPageReqVO.java

@@ -27,4 +27,8 @@ public class ProductPropertyPageReqVO extends PageParam {
     @Schema(description = "创建时间")
     private LocalDateTime[] createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+
 }

+ 3 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertyRespVO.java

@@ -21,4 +21,7 @@ public class ProductPropertyRespVO {
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     private LocalDateTime createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
 }

+ 3 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/property/ProductPropertySaveReqVO.java

@@ -19,4 +19,7 @@ public class ProductPropertySaveReqVO {
     @Schema(description = "备注", example = "颜色")
     private String remark;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValuePageReqVO.java

@@ -21,4 +21,6 @@ public class ProductPropertyValuePageReqVO extends PageParam {
     @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer status;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValueRespVO.java

@@ -28,4 +28,6 @@ public class ProductPropertyValueRespVO {
     @Schema(description = "创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/property/vo/value/ProductPropertyValueSaveReqVO.java

@@ -24,4 +24,6 @@ public class ProductPropertyValueSaveReqVO {
     @Schema(description = "备注", example = "颜色")
     private String remark;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 9 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/ProductSpuController.java

@@ -124,6 +124,15 @@ public class ProductSpuController {
         return success(productSpuService.getTabsCount());
     }
 
+    @GetMapping("/get-count-by-mer")
+    @Operation(summary = "获得商品 SPU 分页 tab count")
+    @PreAuthorize("@ss.hasPermission('product:spu:query')")
+    public CommonResult<Map<Integer, Long>> getSpuCountByMer(@RequestParam("merId") Long merId) {
+        return success(productSpuService.getTabsCount(merId));
+    }
+
+
+
     @GetMapping("/export")
     @Operation(summary = "导出商品")
     @PreAuthorize("@ss.hasPermission('product:spu:export')")

+ 13 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSkuRespVO.java

@@ -48,4 +48,17 @@ public class ProductSkuRespVO {
     @Schema(description = "属性数组")
     private List<ProductSkuSaveReqVO.Property> properties;
 
+    @Schema(description = "推广费, 单位: 分")
+    private Integer promotionFee;
+
+    @Schema(description = "备注")
+    private String mark;
+
+
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
+
 }

+ 12 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSkuSaveReqVO.java

@@ -50,6 +50,13 @@ public class ProductSkuSaveReqVO {
     @Schema(description = "二级分销的佣金,单位:分", example = "19")
     private Integer secondBrokeragePrice;
 
+
+    @Schema(description = "推广费, 单位: 分")
+    private Integer promotionFee;
+
+    @Schema(description = "备注")
+    private String mark;
+
     @Schema(description = "属性数组")
     private List<Property> properties;
 
@@ -73,4 +80,9 @@ public class ProductSkuSaveReqVO {
 
     }
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
 }

+ 20 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java

@@ -42,6 +42,13 @@ public class ProductSpuPageReqVO extends PageParam {
      */
     public static final Integer RECYCLE_BIN = 4;
 
+    @Schema(description = "产地")
+    private String producerArea;
+
+    @Schema(description = "商品类别", example = "1")
+    private Integer spuType;
+
+
     @Schema(description = "商品名称", example = "清凉小短袖")
     private String name;
 
@@ -55,4 +62,17 @@ public class ProductSpuPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+
+    @Schema(description = "推广费, 单位: 分")
+    private Integer promotionFee;
+
+    @Schema(description = "备注")
+    private String mark;
+
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
 }

+ 12 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuRespVO.java

@@ -123,4 +123,16 @@ public class ProductSpuRespVO {
     @ExcelProperty("商品点击量")
     private Integer browseCount;
 
+    @Schema(description = "产地")
+    private String producerArea;
+
+    @Schema(description = "商品类别", example = "1")
+    private Integer spuType;
+
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
 }

+ 12 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuSaveReqVO.java

@@ -93,4 +93,16 @@ public class ProductSpuSaveReqVO {
     @Valid
     private List<ProductSkuSaveReqVO> skus;
 
+    @Schema(description = "产地")
+    private String producerArea;
+
+    @Schema(description = "商品类别", example = "1")
+    private Integer spuType;
+
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
 }

+ 4 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/admin/spu/vo/ProductSpuSimpleRespVO.java

@@ -38,4 +38,8 @@ public class ProductSpuSimpleRespVO {
     @Schema(description = "商品浏览量", requiredMode = Schema.RequiredMode.REQUIRED, example = "2000")
     private Integer browseCount;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+    @Schema(description = "商户id", example = "8240")
+    private Long merchantId;
 }

+ 4 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java

@@ -39,6 +39,10 @@ public class AppProductSpuPageReqVO extends PageParam {
     @Schema(description = "排序方式", example = "true")
     private Boolean sortAsc;
 
+    @Schema(description = "商户ID", example = "1")
+    private Long  merchantId;
+
+
     @AssertTrue(message = "排序字段不合法")
     @JsonIgnore
     public boolean isSortFieldValid() {

+ 3 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/comment/ProductCommentDO.java

@@ -156,4 +156,7 @@ public class ProductCommentDO extends BaseDO {
      */
     private LocalDateTime replyTime;
 
+
+    private Long shopId;
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/property/ProductPropertyDO.java

@@ -48,4 +48,6 @@ public class ProductPropertyDO extends BaseDO {
      */
     private String remark;
 
+    private Long shopId;
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/property/ProductPropertyValueDO.java

@@ -52,4 +52,6 @@ public class ProductPropertyValueDO extends BaseDO {
      */
     private String remark;
 
+    private Long shopId;
+
 }

+ 13 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/sku/ProductSkuDO.java

@@ -94,7 +94,20 @@ public class ProductSkuDO extends BaseDO {
      * 商品销量
      */
     private Integer salesCount;
+    /**
+     * 推广费, 单位: 分
+     */
+    private Integer promotionFee;
+    /**
+     * 备注
+     */
+    private String mark;
+
+
+    private Long shopId;
+
 
+    private Long merchantId;
     /**
      * 商品属性
      */

+ 14 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/dataobject/spu/ProductSpuDO.java

@@ -168,4 +168,18 @@ public class ProductSpuDO extends BaseDO {
      * 浏览量
      */
     private Integer browseCount;
+    /**
+     * 产地
+     */
+    private String producerArea;
+    /**
+     * 商品类别
+     */
+    private Integer spuType;
+
+
+    private Long shopId;
+    private Long merchantId;
+
+
 }

+ 1 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/comment/ProductCommentMapper.java

@@ -17,6 +17,7 @@ public interface ProductCommentMapper extends BaseMapperX<ProductCommentDO> {
                 .likeIfPresent(ProductCommentDO::getUserNickname, reqVO.getUserNickname())
                 .eqIfPresent(ProductCommentDO::getOrderId, reqVO.getOrderId())
                 .eqIfPresent(ProductCommentDO::getSpuId, reqVO.getSpuId())
+                .eqIfPresent(ProductCommentDO::getShopId, reqVO.getShopId())
                 .eqIfPresent(ProductCommentDO::getScores, reqVO.getScores())
                 .eqIfPresent(ProductCommentDO::getReplyStatus, reqVO.getReplyStatus())
                 .betweenIfPresent(ProductCommentDO::getCreateTime, reqVO.getCreateTime())

+ 1 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/property/ProductPropertyMapper.java

@@ -13,6 +13,7 @@ public interface ProductPropertyMapper extends BaseMapperX<ProductPropertyDO> {
     default PageResult<ProductPropertyDO> selectPage(ProductPropertyPageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<ProductPropertyDO>()
                 .likeIfPresent(ProductPropertyDO::getName, reqVO.getName())
+                .eqIfPresent(ProductPropertyDO::getShopId, reqVO.getShopId())
                 .betweenIfPresent(ProductPropertyDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(ProductPropertyDO::getId));
     }

+ 1 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/property/ProductPropertyValueMapper.java

@@ -32,6 +32,7 @@ public interface ProductPropertyValueMapper extends BaseMapperX<ProductPropertyV
     default PageResult<ProductPropertyValueDO> selectPage(ProductPropertyValuePageReqVO reqVO) {
         return selectPage(reqVO, new LambdaQueryWrapperX<ProductPropertyValueDO>()
                 .eqIfPresent(ProductPropertyValueDO::getPropertyId, reqVO.getPropertyId())
+                .eqIfPresent(ProductPropertyValueDO::getShopId, reqVO.getShopId())
                 .likeIfPresent(ProductPropertyValueDO::getName, reqVO.getName())
                 .orderByDesc(ProductPropertyValueDO::getId));
     }

+ 6 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/sku/ProductSkuMapper.java

@@ -4,6 +4,7 @@ import cn.hutool.core.lang.Assert;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -55,4 +56,9 @@ public interface ProductSkuMapper extends BaseMapperX<ProductSkuDO> {
         return update(null, updateWrapper);
     }
 
+    default Integer getSkuCount(Long key) {
+        return Integer.parseInt(String.valueOf(selectCount(new LambdaQueryWrapperX<ProductSkuDO>().eqIfPresent(ProductSkuDO::getMerchantId, key))));
+    }
+
+    ;
 }

+ 2 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/dal/mysql/spu/ProductSpuMapper.java

@@ -28,7 +28,9 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> {
         Integer tabType = reqVO.getTabType();
         LambdaQueryWrapperX<ProductSpuDO> queryWrapper = new LambdaQueryWrapperX<ProductSpuDO>()
                 .likeIfPresent(ProductSpuDO::getName, reqVO.getName())
+                .eqIfPresent(ProductSpuDO::getShopId, reqVO.getShopId())
                 .eqIfPresent(ProductSpuDO::getCategoryId, reqVO.getCategoryId())
+                .eqIfPresent(ProductSpuDO::getMerchantId, reqVO.getMerchantId())
                 .betweenIfPresent(ProductSpuDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(ProductSpuDO::getSort);
         appendTabQuery(tabType, queryWrapper);

+ 1 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/sku/ProductSkuService.java

@@ -110,4 +110,5 @@ public interface ProductSkuService {
      */
     int updateSkuPropertyValue(Long propertyValueId, String propertyValueName);
 
+    Integer getSkuCount(Long key);
 }

+ 7 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/sku/ProductSkuServiceImpl.java

@@ -207,6 +207,13 @@ public class ProductSkuServiceImpl implements ProductSkuService {
         return updateSkus.size();
     }
 
+    @Override
+    public Integer getSkuCount(Long key) {
+
+        return   productSkuMapper.getSkuCount(key);
+
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateSkuList(Long spuId, List<ProductSkuSaveReqVO> skus) {

+ 9 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuService.java

@@ -103,6 +103,15 @@ public interface ProductSpuService {
      */
     Map<Integer, Long> getTabsCount();
 
+
+    /**
+     * 获取 SPU 列表标签对应的 Count 数量
+     *
+     * @return Count 数量
+     */
+    Map<Integer, Long> getTabsCount(Long merId);
+
+
     /**
      * 通过分类 categoryId 查询 SPU 个数
      *

+ 30 - 0
feifan-module-mall/feifan-module-product-biz/src/main/java/cn/newfeifan/mall/module/product/service/spu/ProductSpuServiceImpl.java

@@ -59,6 +59,14 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         // 校验分类、品牌
         validateCategory(createReqVO.getCategoryId());
         brandService.validateProductBrand(createReqVO.getBrandId());
+
+        // 根据商户ID查询对应的店铺ID
+        // todo 后续如果存在多店铺的情况下
+
+
+
+
+
         // 校验 SKU
         List<ProductSkuSaveReqVO> skuSaveReqList = createReqVO.getSkus();
         productSkuService.validateSkuList(skuSaveReqList, createReqVO.getSpecType());
@@ -264,6 +272,28 @@ public class ProductSpuServiceImpl implements ProductSpuService {
         return counts;
     }
 
+    @Override
+    public Map<Integer, Long> getTabsCount(Long merId) {
+        Map<Integer, Long> counts = Maps.newLinkedHashMapWithExpectedSize(5);
+        // 查询销售中的商品数量
+        counts.put(ProductSpuPageReqVO.FOR_SALE,
+                productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.ENABLE.getStatus()));
+        // 查询仓库中的商品数量
+        counts.put(ProductSpuPageReqVO.IN_WAREHOUSE,
+                productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.DISABLE.getStatus()));
+        // 查询售空的商品数量
+        counts.put(ProductSpuPageReqVO.SOLD_OUT,
+                productSpuMapper.selectCount(ProductSpuDO::getStock, 0));
+        // 查询触发警戒库存的商品数量
+        counts.put(ProductSpuPageReqVO.ALERT_STOCK,
+                productSpuMapper.selectCount());
+        // 查询回收站中的商品数量
+        counts.put(ProductSpuPageReqVO.RECYCLE_BIN,
+                productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus()));
+        return counts;
+    }
+
+
     @Override
     public Long getSpuCountByCategoryId(Long categoryId) {
         return productSpuMapper.selectCount(ProductSpuDO::getCategoryId, categoryId);

+ 7 - 0
feifan-module-mall/feifan-module-promotion-api/src/main/java/cn/newfeifan/mall/module/promotion/enums/ErrorCodeConstants.java

@@ -125,4 +125,11 @@ public interface ErrorCodeConstants {
     ErrorCode DIY_PAGE_NOT_EXISTS = new ErrorCode(1_013_018_000, "装修页面不存在");
     ErrorCode DIY_PAGE_NAME_USED = new ErrorCode(1_013_018_001, "装修页面名称({})已经被使用");
 
+    // ========== 商户,店铺相关 ==========
+    ErrorCode SHOP_NOT_EXIST = new ErrorCode(1_013_019_000, "店铺不存在");
+    ErrorCode MER_NOT_EXIST = new ErrorCode(1_013_019_001, "商户不存在");
+
+
+
+
 }

+ 10 - 0
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/controller/admin/diy/DiyTemplateController.java

@@ -40,6 +40,16 @@ public class DiyTemplateController {
         return success(diyTemplateService.createDiyTemplate(createReqVO));
     }
 
+    @PostMapping("/createByMer")
+    @Operation(summary = "创建装修模板")
+    @PreAuthorize("@ss.hasPermission('promotion:diy-template:create')")
+    public CommonResult<Long> createDiyTemplate2(@Valid @RequestBody DiyTemplateCreateReqVO createReqVO) {
+        return success(diyTemplateService.createDiyTemplate(createReqVO));
+    }
+
+
+
+
     @PutMapping("/update")
     @Operation(summary = "更新装修模板")
     @PreAuthorize("@ss.hasPermission('promotion:diy-template:update')")

+ 7 - 3
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/controller/admin/diy/vo/template/DiyTemplateCreateReqVO.java

@@ -1,9 +1,7 @@
 package cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template;
 
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.ToString;
+import lombok.*;
 
 @Schema(description = "管理后台 - 装修模板创建 Request VO")
 @Data
@@ -11,4 +9,10 @@ import lombok.ToString;
 @ToString(callSuper = true)
 public class DiyTemplateCreateReqVO extends DiyTemplateBaseVO {
 
+    @Schema(description = "店铺ID",  example = "123")
+    private Long shopId;
+
+    @Schema(description = "商户ID", example = "12")
+    private Long merId;
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/convert/diy/DiyTemplateConvert.java

@@ -22,6 +22,8 @@ public interface DiyTemplateConvert {
 
     DiyTemplateDO convert(DiyTemplateCreateReqVO bean);
 
+
+
     DiyTemplateDO convert(DiyTemplateUpdateReqVO bean);
 
     DiyTemplateRespVO convert(DiyTemplateDO bean);

+ 5 - 1
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/dal/dataobject/diy/DiyTemplateDO.java

@@ -13,7 +13,7 @@ import java.util.List;
 
 /**
  * 装修模板 DO
- *
+ * <p>
  * 1. 新建一个模版,下面可以包含多个 {@link DiyPageDO} 页面,例如说首页、我的
  * 2. 如果需要使用某个模版,则将 {@link #used} 设置为 true,表示已使用,有且仅有一个
  *
@@ -61,4 +61,8 @@ public class DiyTemplateDO extends BaseDO {
      */
     private String property;
 
+    private Long shopId;
+
+    private Long merId;
+
 }

+ 1 - 4
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/service/diy/DiyTemplateService.java

@@ -1,10 +1,7 @@
 package cn.newfeifan.mall.module.promotion.service.diy;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplatePropertyUpdateRequestVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
+import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.*;
 import cn.newfeifan.mall.module.promotion.dal.dataobject.diy.DiyTemplateDO;
 
 import javax.validation.Valid;

+ 3 - 4
feifan-module-mall/feifan-module-promotion-biz/src/main/java/cn/newfeifan/mall/module/promotion/service/diy/DiyTemplateServiceImpl.java

@@ -3,10 +3,7 @@ package cn.newfeifan.mall.module.promotion.service.diy;
 import cn.hutool.core.util.BooleanUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplateCreateReqVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplatePageReqVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplatePropertyUpdateRequestVO;
-import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.DiyTemplateUpdateReqVO;
+import cn.newfeifan.mall.module.promotion.controller.admin.diy.vo.template.*;
 import cn.newfeifan.mall.module.promotion.convert.diy.DiyPageConvert;
 import cn.newfeifan.mall.module.promotion.convert.diy.DiyTemplateConvert;
 import cn.newfeifan.mall.module.promotion.dal.dataobject.diy.DiyTemplateDO;
@@ -51,6 +48,8 @@ public class DiyTemplateServiceImpl implements DiyTemplateService {
         return diyTemplate.getId();
     }
 
+
+
     /**
      * 创建模板下面的默认页面
      * 默认创建两个页面:首页、我的

+ 17 - 0
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/delivery/DeliveryTypeEnum.java

@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 
 import java.util.Arrays;
+import java.util.HashMap;
 
 /**
  * 配送方式枚举
@@ -34,4 +35,20 @@ public enum DeliveryTypeEnum implements IntArrayValuable {
         return ARRAYS;
     }
 
+    private static final HashMap<Integer, String> DELIVERY_LIST = new HashMap<>();
+
+    static {
+        for (DeliveryTypeEnum applicationEnum : DeliveryTypeEnum.values()) {
+            DELIVERY_LIST.put(applicationEnum.getType(), applicationEnum.getName());
+        }
+    }
+    public static String getNameByValue(Integer value) {
+
+        return  DELIVERY_LIST.get(value);
+
+    }
+
+
+
+
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/order/TradeOrderStatusEnum.java

@@ -21,7 +21,8 @@ public enum TradeOrderStatusEnum implements IntArrayValuable {
     UNDELIVERED(10, "待发货"),
     DELIVERED(20, "已发货"),
     COMPLETED(30, "已完成"),
-    CANCELED(40, "已取消");
+    CANCELED(40, "已取消"),
+    AFTER_SALE(-2, "售后");
 
     public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeOrderStatusEnum::getStatus).toArray();
 

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/pom.xml

@@ -28,9 +28,10 @@
             <artifactId>feifan-module-product-api</artifactId>
             <version>${revision}</version>
         </dependency>
+
         <dependency>
             <groupId>cn.newfeifan.zx</groupId>
-            <artifactId>feifan-module-pay-api</artifactId>
+            <artifactId>feifan-module-pay-biz</artifactId>
             <version>${revision}</version>
         </dependency>
         <dependency>

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleBaseVO.java

@@ -116,4 +116,6 @@ public class AfterSaleBaseVO {
     @Schema(description = "收货备注", example = "不喜欢")
     private String receiveReason;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSaleDetailRespVO.java

@@ -49,4 +49,6 @@ public class AfterSaleDetailRespVO extends AfterSaleBaseVO {
 
     }
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/aftersale/vo/AfterSalePageReqVO.java

@@ -46,4 +46,6 @@ public class AfterSalePageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 3 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressBaseVO.java

@@ -31,4 +31,7 @@ public class DeliveryExpressBaseVO {
     @NotNull(message = "状态不能为空")
     private Integer status;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressExportReqVO.java

@@ -24,5 +24,6 @@ public class DeliveryExpressExportReqVO {
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
-
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/express/DeliveryExpressPageReqVO.java

@@ -27,5 +27,6 @@ public class DeliveryExpressPageReqVO extends PageParam {
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
-
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplatePageReqVO.java

@@ -26,5 +26,6 @@ public class DeliveryExpressTemplatePageReqVO extends PageParam {
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
-
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpStoreBaseVO.java

@@ -64,5 +64,6 @@ public class DeliveryPickUpStoreBaseVO {
     @NotNull(message = "门店状态不能为空")
     @InEnum(CommonStatusEnum.class)
     private Integer status;
-
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/delivery/vo/pickup/DeliveryPickUpStorePageReqVO.java

@@ -36,5 +36,6 @@ public class DeliveryPickUpStorePageReqVO extends PageParam {
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
-
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 76 - 5
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -1,36 +1,50 @@
 package cn.newfeifan.mall.module.trade.controller.admin.order;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.newfeifan.mall.framework.common.pojo.CommonResult;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.member.api.user.MemberUserApi;
 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageItemRespVO;
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageReqVO;
+import cn.newfeifan.mall.module.pay.convert.order.PayOrderConvert;
+import cn.newfeifan.mall.module.pay.dal.dataobject.app.PayAppDO;
+import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
+import cn.newfeifan.mall.module.pay.service.app.PayAppService;
+import cn.newfeifan.mall.module.pay.service.order.PayOrderService;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.*;
 import cn.newfeifan.mall.module.trade.convert.order.TradeOrderConvert;
+import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderLogDO;
+import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum;
+import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderProperties;
 import cn.newfeifan.mall.module.trade.service.aftersale.AfterSaleService;
+import cn.newfeifan.mall.module.trade.service.delivery.DeliveryExpressService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderLogService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderUpdateService;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import javax.validation.Valid;
+import java.util.*;
 
 import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertList;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertSet;
+import static cn.newfeifan.mall.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
 @Tag(name = "管理后台 - 交易订单")
 @RestController
@@ -45,10 +59,22 @@ public class TradeOrderController {
     private TradeOrderQueryService tradeOrderQueryService;
     @Resource
     private TradeOrderLogService tradeOrderLogService;
-
+    @Resource
+    private TradeOrderProperties tradeOrderProperties;
     @Resource
     private MemberUserApi memberUserApi;
 
+    @Resource
+    private DeliveryExpressService deliveryExpressService;
+    @Resource
+    private AfterSaleService afterSaleService;
+
+
+    @Resource
+    private PayOrderService orderService;
+    @Resource
+    private PayAppService appService;
+
     @GetMapping("/page")
     @Operation(summary = "获得交易订单分页")
     @PreAuthorize("@ss.hasPermission('trade:order:query')")
@@ -77,6 +103,15 @@ public class TradeOrderController {
         return success(tradeOrderQueryService.getOrderSummary(reqVO));
     }
 
+  /*  @GetMapping("/order-count")
+    @Operation(summary = "获得交易订单统计")
+    @PreAuthorize("@ss.hasPermission('trade:order:query')")
+    public CommonResult<TradeOrderSummaryRespVO> getOrderCount(TradeOrderPageReqVO reqVO) {
+        Long orderCount = tradeOrderQueryService.getOrderCount(getLoginUserId(), null, null);
+        return success(orderCount);
+    }*/
+
+
     @GetMapping("/get-detail")
     @Operation(summary = "获得交易订单详情")
     @Parameter(name = "id", description = "订单编号", required = true, example = "1")
@@ -166,4 +201,40 @@ public class TradeOrderController {
         return success(TradeOrderConvert.INSTANCE.convert2(tradeOrder, null));
     }
 
+
+    @GetMapping("/get-count")
+    @Operation(summary = "获得交易订单数量")
+    public CommonResult<Map<Integer, Long>> getOrderCount(@RequestParam(value = "shopId", required = false) Long shopId,
+                                                          @RequestParam(value = "merId", required = false) Long merId) {
+        Map<Integer, Long> orderCount = Maps.newLinkedHashMapWithExpectedSize(6);
+        orderCount.put(-1, tradeOrderQueryService.getOrderCount(null));
+        orderCount.put(-2, afterSaleService.getApplyingAfterSaleCount(null));
+        orderCount.put(TradeOrderStatusEnum.UNPAID.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNPAID.getStatus(), shopId, merId));
+        orderCount.put(TradeOrderStatusEnum.UNDELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNDELIVERED.getStatus(), shopId, merId));
+        orderCount.put(TradeOrderStatusEnum.DELIVERED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.DELIVERED.getStatus(), shopId, merId));
+        orderCount.put(TradeOrderStatusEnum.COMPLETED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.COMPLETED.getStatus(), shopId, merId));
+        orderCount.put(TradeOrderStatusEnum.CANCELED.getStatus(), tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.CANCELED.getStatus(), shopId, merId));
+        return success(orderCount);
+    }
+
+
+    @GetMapping("/pay/page")
+    @Operation(summary = "获得支付订单分页")
+    @PreAuthorize("@ss.hasPermission('pay:order:query')")
+    public CommonResult<PageResult<PayOrderPageItemRespVO>> getOrderPage(@Valid PayOrderPageReqVO pageVO) {
+        PageResult<PayOrderDO> pageResult = orderService.getOrderPage(pageVO);
+        if (CollectionUtil.isEmpty(pageResult.getList())) {
+            return success(new PageResult<>(pageResult.getTotal()));
+        }
+
+        // 拼接返回
+        Map<Long, PayAppDO> appMap = appService.getAppMap(convertList(pageResult.getList(), PayOrderDO::getAppId));
+        PageResult<PayOrderPageItemRespVO> data = PayOrderConvert.INSTANCE.convertPage(pageResult, appMap);
+        List<PayOrderPageItemRespVO> list = tradeOrderQueryService.getOrderNoAndPicUrl(data.getList());
+        data.setList(list);
+
+        return success(data);
+    }
+
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderBaseVO.java

@@ -148,4 +148,6 @@ public class TradeOrderBaseVO {
     @Schema(description = "推广人编号", example = "1")
     private Long brokerageUserId;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 4 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderDeliveryReqVO.java

@@ -1,5 +1,7 @@
 package cn.newfeifan.mall.module.trade.controller.admin.order.vo;
 
+import cn.newfeifan.mall.framework.common.validation.InEnum;
+import cn.newfeifan.mall.module.trade.enums.delivery.DeliveryTypeEnum;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -20,4 +22,6 @@ public class TradeOrderDeliveryReqVO {
     @Schema(description = "发货物流单号", example = "SF123456789")
     private String logisticsNo;
 
+
+
 }

+ 45 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderDetailRespVO.java

@@ -1,11 +1,15 @@
 package cn.newfeifan.mall.module.trade.controller.admin.order.vo;
 
+import cn.newfeifan.mall.module.product.api.comment.dto.ProductCommentCreateReqDTO;
+import cn.newfeifan.mall.module.trade.controller.admin.aftersale.vo.AfterSaleBaseVO;
 import cn.newfeifan.mall.module.trade.controller.admin.base.member.user.MemberUserRespVO;
 import cn.newfeifan.mall.module.trade.controller.admin.base.product.property.ProductPropertyValueDetailRespVO;
+import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderDetailRespVO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.time.LocalDateTime;
+import java.util.Date;
 import java.util.List;
 
 @Schema(description = "管理后台 - 交易订单的详情 Response VO")
@@ -26,6 +30,46 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
      */
     private MemberUserRespVO brokerageUser;
 
+
+
+
+    /* *
+
+    *//**
+     * 订单图片- 商品图片
+     *//*
+    private String goodUrl;
+    *//**
+     * 配送类型
+     *//*
+    private String  deliveryType;
+    *//**
+     * 运费
+     *//*
+    private String  deliveryPrice;
+    *//**
+     * 发货公司
+     *//*
+    private String logisticsName;
+
+
+    *//**
+     * 售后信息
+     *//*
+    private AfterSaleBaseVO afterSaleBaseVO;
+
+    *//**
+     * 评价信息
+     *//*
+    private ProductCommentCreateReqDTO productCommentCreateReqDTO;
+
+    *//**
+     * 物流信息
+     *//*
+
+
+
+
     /**
      * 操作日志列表
      */
@@ -60,4 +104,5 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO {
 
     }
 
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderItemBaseVO.java

@@ -64,4 +64,6 @@ public class TradeOrderItemBaseVO {
     @Schema(description = "售后状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer afterSaleStatus;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderPageItemRespVO.java

@@ -32,4 +32,9 @@ public class TradeOrderPageItemRespVO extends TradeOrderBaseVO {
 
     }
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
+
 }

+ 10 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderPageReqVO.java

@@ -61,4 +61,14 @@ public class TradeOrderPageReqVO extends PageParam {
     @InEnum(value = TerminalEnum.class, message = "订单来源 {value}")
     private Integer terminal;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
+
+
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
+
+    @Schema(description = "商户ID", example = "1")
+    private Long  merchantId;
+
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderDetailRespVO.java

@@ -144,4 +144,6 @@ public class AppTradeOrderDetailRespVO {
      */
     private List<AppTradeOrderItemRespVO> items;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderPageItemRespVO.java

@@ -50,4 +50,6 @@ public class AppTradeOrderPageItemRespVO {
      */
     private List<AppTradeOrderItemRespVO> items;
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderSettlementReqVO.java

@@ -102,4 +102,6 @@ public class AppTradeOrderSettlementReqVO {
 
     }
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 2 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/AppTradeOrderSettlementRespVO.java

@@ -122,4 +122,6 @@ public class AppTradeOrderSettlementRespVO {
 
     }
 
+    @Schema(description = "店铺id", example = "20588")
+    private Long shopId;
 }

+ 1 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/vo/item/AppTradeOrderItemRespVO.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.trade.controller.app.order.vo.item;
 
 import cn.newfeifan.mall.module.trade.controller.app.base.property.AppProductPropertyValueDetailRespVO;
+import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/order/TradeOrderConvert.java

@@ -151,10 +151,13 @@ public interface TradeOrderConvert {
         orderVO.setLogs(convertList03(orderLogs));
         return orderVO;
     }
+
+
     List<TradeOrderDetailRespVO.OrderLog> convertList03(List<TradeOrderLogDO> orderLogs);
 
     TradeOrderDetailRespVO convert2(TradeOrderDO order, List<TradeOrderItemDO> items);
 
+
     MemberUserRespVO convert(MemberUserRespDTO bean);
 
     default PageResult<AppTradeOrderPageItemRespVO> convertPage02(PageResult<TradeOrderDO> pageResult,
@@ -285,4 +288,6 @@ public interface TradeOrderConvert {
     })
     CombinationRecordCreateReqDTO convert(TradeOrderDO order, TradeOrderItemDO item);
 
+    Object convert(TradeOrderDO order, List<TradeOrderItemDO> orderItems, List<TradeOrderLogDO> orderLogs, MemberUserRespDTO user, MemberUserRespDTO brokerageUser, TradeOrderProperties tradeOrderProperties, DeliveryExpressDO express);
+
 }

+ 4 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/aftersale/AfterSaleDO.java

@@ -198,4 +198,8 @@ public class AfterSaleDO extends BaseDO {
      */
     private String receiveReason;
 
+
+
+    private Long shopId;
+
 }

+ 3 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryExpressTemplateDO.java

@@ -40,4 +40,7 @@ public class DeliveryExpressTemplateDO extends BaseDO {
      */
     private Integer sort;
 
+
+    private Long shopId;
+
 }

+ 1 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/delivery/DeliveryPickUpStoreDO.java

@@ -81,4 +81,5 @@ public class DeliveryPickUpStoreDO extends BaseDO {
      */
     private Integer status;
 
+    private Long shopId;
 }

+ 35 - 31
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/dataobject/order/TradeOrderDO.java

@@ -44,25 +44,25 @@ public class TradeOrderDO extends BaseDO {
     private Long id;
     /**
      * 订单流水号
-     *
+     * <p>
      * 例如说,1146347329394184195
      */
     private String no;
     /**
      * 订单类型
-     *
+     * <p>
      * 枚举 {@link TradeOrderTypeEnum}
      */
     private Integer type;
     /**
      * 订单来源
-     *
+     * <p>
      * 枚举 {@link TerminalEnum}
      */
     private Integer terminal;
     /**
      * 用户编号
-     *
+     * <p>
      * 关联 MemberUserDO 的 id 编号
      */
     private Long userId;
@@ -76,7 +76,7 @@ public class TradeOrderDO extends BaseDO {
     private String userRemark;
     /**
      * 订单状态
-     *
+     * <p>
      * 枚举 {@link TradeOrderStatusEnum}
      */
     private Integer status;
@@ -94,7 +94,7 @@ public class TradeOrderDO extends BaseDO {
     private LocalDateTime cancelTime;
     /**
      * 取消类型
-     *
+     * <p>
      * 枚举 {@link TradeOrderCancelTypeEnum}
      */
     private Integer cancelType;
@@ -104,7 +104,7 @@ public class TradeOrderDO extends BaseDO {
     private String remark;
     /**
      * 是否评价
-     *
+     * <p>
      * true - 已评价
      * false - 未评价
      */
@@ -112,7 +112,7 @@ public class TradeOrderDO extends BaseDO {
 
     /**
      * 推广人编号
-     *
+     * <p>
      * 关联 {@link BrokerageUserDO#getId()} 字段,即 {@link MemberUserRespDTO#getId()} 字段
      */
     private Long brokerageUserId;
@@ -125,13 +125,13 @@ public class TradeOrderDO extends BaseDO {
 
     /**
      * 支付订单编号
-     *
+     * <p>
      * 对接 pay-module-biz 支付服务的支付订单编号,即 PayOrderDO 的 id 编号
      */
     private Long payOrderId;
     /**
      * 是否已支付
-     *
+     * <p>
      * true - 已经支付过
      * false - 没有支付过
      */
@@ -142,22 +142,22 @@ public class TradeOrderDO extends BaseDO {
     private LocalDateTime payTime;
     /**
      * 支付渠道
-     *
+     * <p>
      * 对应 PayChannelEnum 枚举
      */
     private String payChannelCode;
 
     /**
      * 商品原价,单位:分
-     *
+     * <p>
      * totalPrice = {@link TradeOrderItemDO#getPrice()} * {@link TradeOrderItemDO#getCount()} 求和
-     *
+     * <p>
      * 对应 taobao 的 trade.total_fee 字段
      */
     private Integer totalPrice;
     /**
      * 优惠金额,单位:分
-     *
+     * <p>
      * 对应 taobao 的 order.discount_fee 字段
      */
     private Integer discountPrice;
@@ -167,13 +167,13 @@ public class TradeOrderDO extends BaseDO {
     private Integer deliveryPrice;
     /**
      * 订单调价,单位:分
-     *
+     * <p>
      * 正数,加价;负数,减价
      */
     private Integer adjustPrice;
     /**
      * 应付金额(总),单位:分
-     *
+     * <p>
      * = {@link #totalPrice}
      * - {@link #couponPrice}
      * - {@link #pointPrice}
@@ -187,21 +187,21 @@ public class TradeOrderDO extends BaseDO {
     // ========== 收件 + 物流基本信息 ==========
     /**
      * 配送方式
-     *
+     * <p>
      * 枚举 {@link DeliveryTypeEnum}
      */
     private Integer deliveryType;
     /**
      * 发货物流公司编号
-     *
+     * <p>
      * 如果无需发货,则 logisticsId 设置为 0。原因是,不想再添加额外字段
-     *
+     * <p>
      * 关联 {@link DeliveryExpressDO#getId()}
      */
     private Long logisticsId;
     /**
      * 发货物流单号
-     *
+     * <p>
      * 如果无需发货,则 logisticsNo 设置 ""。原因是,不想再添加额外字段
      */
     private String logisticsNo;
@@ -233,7 +233,7 @@ public class TradeOrderDO extends BaseDO {
 
     /**
      * 自提门店编号
-     *
+     * <p>
      * 关联 {@link DeliveryPickUpStoreDO#getId()}
      */
     private Long pickUpStoreId;
@@ -245,13 +245,13 @@ public class TradeOrderDO extends BaseDO {
     // ========== 售后基本信息 ==========
     /**
      * 售后状态
-     *
+     * <p>
      * 枚举 {@link TradeOrderRefundStatusEnum}
      */
     private Integer refundStatus;
     /**
      * 退款金额,单位:分
-     *
+     * <p>
      * 注意,退款并不会影响 {@link #payPrice} 实际支付金额
      * 也就说,一个订单最终产生多少金额的收入 = payPrice - refundPrice
      */
@@ -264,7 +264,7 @@ public class TradeOrderDO extends BaseDO {
     private Long couponId;
     /**
      * 优惠劵减免金额,单位:分
-     *
+     * <p>
      * 对应 taobao 的 trade.coupon_fee 字段
      */
     private Integer couponPrice;
@@ -274,7 +274,7 @@ public class TradeOrderDO extends BaseDO {
     private Integer usePoint;
     /**
      * 积分抵扣的金额,单位:分
-     *
+     * <p>
      * 对应 taobao 的 trade.point_fee 字段
      */
     private Integer pointPrice;
@@ -293,41 +293,45 @@ public class TradeOrderDO extends BaseDO {
 
     /**
      * 秒杀活动编号
-     *
+     * <p>
      * 关联 SeckillActivityDO 的 id 字段
      */
     private Long seckillActivityId;
 
     /**
      * 砍价活动编号
-     *
+     * <p>
      * 关联 BargainActivityDO 的 id 字段
      */
     private Long bargainActivityId;
     /**
      * 砍价记录编号
-     *
+     * <p>
      * 关联 BargainRecordDO 的 id 字段
      */
     private Long bargainRecordId;
 
     /**
      * 拼团活动编号
-     *
+     * <p>
      * 关联 CombinationActivityDO 的 id 字段
      */
     private Long combinationActivityId;
     /**
      * 拼团团长编号
-     *
+     * <p>
      * 关联 CombinationRecordDO 的 headId 字段
      */
     private Long combinationHeadId;
     /**
      * 拼团记录编号
-     *
+     * <p>
      * 关联 CombinationRecordDO 的 id 字段
      */
     private Long combinationRecordId;
 
+
+    private Long shopId;
+
+    private Long merchantId;
 }

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java

@@ -19,6 +19,7 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
                 .likeIfPresent(AfterSaleDO::getNo, reqVO.getNo())
                 .eqIfPresent(AfterSaleDO::getStatus, reqVO.getStatus())
                 .eqIfPresent(AfterSaleDO::getType, reqVO.getType())
+                .eqIfPresent(AfterSaleDO::getShopId,reqVO.getShopId())
                 .eqIfPresent(AfterSaleDO::getWay, reqVO.getWay())
                 .likeIfPresent(AfterSaleDO::getOrderNo, reqVO.getOrderNo())
                 .likeIfPresent(AfterSaleDO::getSpuName, reqVO.getSpuName())
@@ -44,7 +45,7 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
 
     default Long selectCountByUserIdAndStatus(Long userId, Collection<Integer> statuses) {
         return selectCount(new LambdaQueryWrapperX<AfterSaleDO>()
-                .eq(AfterSaleDO::getUserId, userId)
+                .eqIfPresent(AfterSaleDO::getUserId, userId)
                 .in(AfterSaleDO::getStatus, statuses));
     }
 

+ 2 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/delivery/DeliveryExpressTemplateMapper.java

@@ -15,12 +15,13 @@ public interface DeliveryExpressTemplateMapper extends BaseMapperX<DeliveryExpre
         return selectPage(reqVO, new LambdaQueryWrapperX<DeliveryExpressTemplateDO>()
                 .likeIfPresent(DeliveryExpressTemplateDO::getName, reqVO.getName())
                 .eqIfPresent(DeliveryExpressTemplateDO::getChargeMode, reqVO.getChargeMode())
+                .eqIfPresent(DeliveryExpressTemplateDO::getShopId, reqVO.getShopId())
                 .betweenIfPresent(DeliveryExpressTemplateDO::getCreateTime, reqVO.getCreateTime())
                 .orderByAsc(DeliveryExpressTemplateDO::getSort));
     }
 
     default DeliveryExpressTemplateDO selectByName(String name) {
-        return selectOne(DeliveryExpressTemplateDO::getName,name);
+        return selectOne(DeliveryExpressTemplateDO::getName, name);
     }
 
 }

+ 1 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/delivery/DeliveryPickUpStoreMapper.java

@@ -18,6 +18,7 @@ public interface DeliveryPickUpStoreMapper extends BaseMapperX<DeliveryPickUpSto
                 .eqIfPresent(DeliveryPickUpStoreDO::getPhone, reqVO.getPhone())
                 .eqIfPresent(DeliveryPickUpStoreDO::getAreaId, reqVO.getAreaId())
                 .eqIfPresent(DeliveryPickUpStoreDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(DeliveryPickUpStoreDO::getShopId, reqVO.getShopId())
                 .betweenIfPresent(DeliveryPickUpStoreDO::getCreateTime, reqVO.getCreateTime())
                 .orderByDesc(DeliveryPickUpStoreDO::getId));
     }

+ 23 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -38,6 +38,8 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
                 .eqIfPresent(TradeOrderDO::getPayChannelCode, reqVO.getPayChannelCode())
                 .eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
                 .eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
+                .eqIfPresent(TradeOrderDO::getMerchantId, reqVO.getMerchantId())
+
                 .inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
                 .likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
                 .betweenIfPresent(TradeOrderDO::getCreateTime, reqVO.getCreateTime())
@@ -80,6 +82,20 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
                 .eqIfPresent(TradeOrderDO::getCommentStatus, commentStatus));
     }
 
+    default Long selectCountByStatus(Integer status) {
+        return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eqIfPresent(TradeOrderDO::getStatus, status));
+    }
+
+    default Long selectCountByStatus(Integer status, Long shopId, Long merId) {
+        return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eqIfPresent(TradeOrderDO::getStatus, status)
+                .eqIfPresent(TradeOrderDO::getShopId, shopId)
+                .eqIfPresent(TradeOrderDO::getMerchantId, merId));
+    }
+
+    ;
+
     default TradeOrderDO selectOrderByIdAndUserId(Long orderId, Long loginUserId) {
         return selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
                 .eq(TradeOrderDO::getId, orderId)
@@ -124,4 +140,11 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
         );
     }
 
+
+    default Integer selectByMerId(Long key) {
+        return Integer.parseInt(String.valueOf(selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eqIfPresent(TradeOrderDO::getMerchantId, key))));
+    }
+
+    ;
 }

+ 7 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleService.java

@@ -49,6 +49,13 @@ public interface AfterSaleService {
      * @return 售后订单
      */
     AfterSaleDO getAfterSale(Long id);
+    /**
+     * 【管理员】获得售后单 通过订单编号
+     *
+     * @param id 售后编号
+     * @return 售后订单
+     */
+    AfterSaleDO getAfterSaleByOrderNo(String orderNo);
 
     /**
      * 【会员】创建售后订单

+ 7 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/aftersale/AfterSaleServiceImpl.java

@@ -32,6 +32,8 @@ import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderPropertie
 import cn.newfeifan.mall.module.trade.service.delivery.DeliveryExpressService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderUpdateService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -93,6 +95,11 @@ public class AfterSaleServiceImpl implements AfterSaleService {
         return tradeAfterSaleMapper.selectById(id);
     }
 
+    @Override
+    public AfterSaleDO getAfterSaleByOrderNo(String orderNo) {
+        return tradeAfterSaleMapper.selectOne(new LambdaQueryWrapper<AfterSaleDO>().eq(AfterSaleDO::getOrderNo,orderNo));
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     @AfterSaleLog(operateType = AfterSaleOperateTypeEnum.MEMBER_CREATE)

+ 34 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.trade.service.order;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageItemRespVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
@@ -155,4 +156,37 @@ public interface TradeOrderQueryService {
      */
     List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds);
 
+    /**
+     * 根据状态获取订单数量, 不通过用户ID信息
+     * @param status
+     * @return
+     */
+    Long getOrderCount(Integer status);
+
+
+    /**
+     * 根据状态获取订单数量, 不通过用户ID信息
+     * @param status 订单状态
+     * @param shopId 店铺ID
+     * @param merId 商户ID
+     * @return
+     */
+    Long getOrderCount(Integer status,Long shopId, Long merId);
+
+
+    /**
+     * 补充订单编号以及商品图片
+     * @param list
+     * @return
+     */
+    List<PayOrderPageItemRespVO> getOrderNoAndPicUrl(List<PayOrderPageItemRespVO> list);
+
+
+    /**
+     * 获取商户订单总数
+     * @param key
+     * @return
+     */
+    Integer getShopSalesVolume(Long key);
+
 }

+ 41 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -8,6 +8,9 @@ import cn.hutool.extra.spring.SpringUtil;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.member.api.user.MemberUserApi;
 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageItemRespVO;
+import cn.newfeifan.mall.module.product.api.sku.ProductSkuApi;
+import cn.newfeifan.mall.module.product.api.sku.dto.ProductSkuRespDTO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
 import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderSummaryRespVO;
 import cn.newfeifan.mall.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
@@ -28,6 +31,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertSet;
@@ -56,6 +60,10 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     @Resource
     private MemberUserApi memberUserApi;
 
+    @Resource
+    private ProductSkuApi productSkuApi;
+
+
     // =================== Order ===================
 
     @Override
@@ -151,6 +159,36 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
         return tradeOrderMapper.selectCountByUserIdAndStatus(userId, status, commentStatus);
     }
 
+    @Override
+    public Long getOrderCount(Integer status) {
+        return tradeOrderMapper.selectCountByStatus(status);
+    }
+
+    @Override
+    public Long getOrderCount(Integer status, Long shopId, Long merId) {
+        return tradeOrderMapper.selectCountByStatus(status,shopId,merId);
+    }
+
+    @Override
+    public List<PayOrderPageItemRespVO> getOrderNoAndPicUrl(List<PayOrderPageItemRespVO> list) {
+        for (PayOrderPageItemRespVO payOrderPageItemRespVO : list) {
+            TradeOrderDO tradeOrderDO = tradeOrderMapper.selectById(payOrderPageItemRespVO.getId());
+            List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectListByOrderId(payOrderPageItemRespVO.getId());
+            if (tradeOrderDO != null && !tradeOrderItemDOS.isEmpty()) {
+                payOrderPageItemRespVO.setPicUrl(tradeOrderItemDOS.get(0).getPicUrl());
+                payOrderPageItemRespVO.setOrderNo(tradeOrderDO.getNo());
+            }
+        }
+        return list;
+    }
+
+    @Override
+    public Integer getShopSalesVolume(Long key) {
+
+        return  tradeOrderMapper.selectByMerId(key);
+
+    }
+
     @Override
     public List<ExpressTrackRespDTO> getExpressTrackList(Long id, Long userId) {
         // 查询订单
@@ -206,7 +244,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
 
     /**
      * 查询物流轨迹
-     *
+     * <p>
      * 缓存的目的:考虑及时性要求不高,但是每次调用需要钱
      *
      * @param code           快递公司编码
@@ -245,9 +283,11 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
         if (CollUtil.isEmpty(orderIds)) {
             return Collections.emptyList();
         }
+
         return tradeOrderItemMapper.selectListByOrderId(orderIds);
     }
 
+
     /**
      * 获得自身的代理对象,解决 AOP 生效问题
      *

+ 35 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserBaseVO.java

@@ -10,6 +10,7 @@ import java.time.LocalDateTime;
 import java.util.List;
 
 import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 /**
  * 会员用户 Base VO,提供给添加、修改、详细的子 VO 使用
@@ -62,4 +63,38 @@ public class MemberUserBaseVO {
     @Schema(description = "用户分组编号", example = "1")
     private Long groupId;
 
+    @Schema(description = "直接推荐人id", example = "15893")
+    private Long recommenderdId;
+
+    @Schema(description = "当前身价值")
+    private Long currentMemberWorthValue;
+
+    @Schema(description = "预增加身价值")
+    private Long preAddedMemberWorthValue;
+
+    @Schema(description = "未来身价值,未来身价值=当前身价值+预增加身价值")
+    private Long futureMemberWorthValue;
+
+    @Schema(description = "当前身价级别名称", example = "张三")
+    private String currentMemberWorthLevelName;
+
+    @Schema(description = "当前身价级别id", example = "24146")
+    private Long currentMemberWorthLevelId;
+
+    @Schema(description = "最后签到时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime lastSignInTime;
+
+    @Schema(description = "连续签到天数")
+    private LocalDateTime continuousSignInDays;
+
+    @Schema(description = "当前积分值")
+    private Long currentMemberPoints;
+
+    @Schema(description = "预增加积分值")
+    private Long preAddedMemberWorth;
+
+    @Schema(description = "累计消费金额(只算人民币,单位为分)")
+    private Long cumulativeSpending;
+
 }

+ 36 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserPageReqVO.java

@@ -18,6 +18,10 @@ import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR
 @ToString(callSuper = true)
 public class MemberUserPageReqVO extends PageParam {
 
+
+    @Schema(description = "用户Id", example = "1")
+    private Long id;
+
     @Schema(description = "手机号", example = "15601691300")
     private String mobile;
 
@@ -44,5 +48,37 @@ public class MemberUserPageReqVO extends PageParam {
     // TODO 芋艿:注册用户类型;
 
     // TODO 芋艿:登录用户类型;
+    @Schema(description = "直接推荐人id", example = "15893")
+    private Long recommenderdId;
+
+    @Schema(description = "当前身价值")
+    private Long currentMemberWorthValue;
+
+    @Schema(description = "预增加身价值")
+    private Long preAddedMemberWorthValue;
+
+    @Schema(description = "未来身价值,未来身价值=当前身价值+预增加身价值")
+    private Long futureMemberWorthValue;
+
+    @Schema(description = "当前身价级别名称", example = "张三")
+    private String currentMemberWorthLevelName;
+
+    @Schema(description = "当前身价级别id", example = "24146")
+    private Long currentMemberWorthLevelId;
+
+    @Schema(description = "最后签到时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] lastSignInTime;
+
+    @Schema(description = "连续签到天数")
+    private LocalDateTime continuousSignInDays;
+
+    @Schema(description = "当前积分值")
+    private Long currentMemberPoints;
+
+    @Schema(description = "预增加积分值")
+    private Long preAddedMemberWorth;
 
+    @Schema(description = "累计消费金额(只算人民币,单位为分)")
+    private Long cumulativeSpending;
 }

+ 39 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/admin/user/vo/MemberUserRespVO.java

@@ -4,10 +4,13 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
 import java.util.List;
 
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
 @Schema(description = "管理后台 - 会员用户 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -49,4 +52,40 @@ public class MemberUserRespVO extends MemberUserBaseVO {
     @Schema(description = "用户经验值", requiredMode  = Schema.RequiredMode.REQUIRED, example = "200")
     private Integer experience;
 
+
+
+
+    @Schema(description = "直接推荐人id", example = "15893")
+    private Long recommenderdId;
+
+    @Schema(description = "当前身价值")
+    private Long currentMemberWorthValue;
+
+    @Schema(description = "预增加身价值")
+    private Long preAddedMemberWorthValue;
+
+    @Schema(description = "未来身价值,未来身价值=当前身价值+预增加身价值")
+    private Long futureMemberWorthValue;
+
+    @Schema(description = "当前身价级别名称", example = "张三")
+    private String currentMemberWorthLevelName;
+
+    @Schema(description = "当前身价级别id", example = "24146")
+    private Long currentMemberWorthLevelId;
+
+    @Schema(description = "最后签到时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime lastSignInTime;
+
+    @Schema(description = "连续签到天数")
+    private LocalDateTime continuousSignInDays;
+
+    @Schema(description = "当前积分值")
+    private Long currentMemberPoints;
+
+    @Schema(description = "预增加积分值")
+    private Long preAddedMemberWorth;
+
+    @Schema(description = "累计消费金额(只算人民币,单位为分)")
+    private Long cumulativeSpending;
 }

+ 47 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/user/MemberUserDO.java

@@ -142,4 +142,51 @@ public class MemberUserDO extends TenantBaseDO {
      */
     private Long groupId;
 
+
+
+    /**
+     * 直接推荐人id
+     */
+    private Long recommenderdId;
+    /**
+     * 当前身价值
+     */
+    private Long currentMemberWorthValue;
+    /**
+     * 预增加身价值
+     */
+    private Long preAddedMemberWorthValue;
+    /**
+     * 未来身价值,未来身价值=当前身价值+预增加身价值
+     */
+    private Long futureMemberWorthValue;
+    /**
+     * 当前身价级别名称
+     */
+    private String currentMemberWorthLevelName;
+    /**
+     * 当前身价级别id
+     */
+    private Long currentMemberWorthLevelId;
+    /**
+     * 最后签到时间
+     */
+    private LocalDateTime lastSignInTime;
+    /**
+     * 连续签到天数
+     */
+    private LocalDateTime continuousSignInDays;
+    /**
+     * 当前积分值
+     */
+    private Long currentMemberPoints;
+    /**
+     * 预增加积分值
+     */
+    private Long preAddedMemberWorth;
+    /**
+     * 累计消费金额(只算人民币,单位为分)
+     */
+    private Long cumulativeSpending;
+
 }

+ 2 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/mysql/user/MemberUserMapper.java

@@ -41,12 +41,14 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
         }
         // 分页查询
         return selectPage(reqVO, new LambdaQueryWrapperX<MemberUserDO>()
+                .eqIfPresent(MemberUserDO::getId, reqVO.getId())
                 .likeIfPresent(MemberUserDO::getMobile, reqVO.getMobile())
                 .betweenIfPresent(MemberUserDO::getLoginDate, reqVO.getLoginDate())
                 .likeIfPresent(MemberUserDO::getNickname, reqVO.getNickname())
                 .betweenIfPresent(MemberUserDO::getCreateTime, reqVO.getCreateTime())
                 .eqIfPresent(MemberUserDO::getLevelId, reqVO.getLevelId())
                 .eqIfPresent(MemberUserDO::getGroupId, reqVO.getGroupId())
+                .eqIfPresent(MemberUserDO::getCurrentMemberWorthValue, reqVO.getCurrentMemberWorthValue())
                 .apply(StrUtil.isNotEmpty(tagIdSql), tagIdSql)
                 .orderByDesc(MemberUserDO::getId));
     }

+ 7 - 0
feifan-module-pay/feifan-module-pay-biz/pom.xml

@@ -29,6 +29,13 @@
             <version>${revision}</version>
         </dependency>
 
+        <!--<dependency>
+            <groupId>cn.newfeifan.zx</groupId>
+            <artifactId>feifan-module-trade-biz</artifactId>
+            <version>2.0.0-jdk8-snapshot</version>
+        </dependency>-->
+
+
         <!-- 业务组件 -->
         <dependency>
             <groupId>cn.newfeifan.zx</groupId>

+ 10 - 2
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/admin/order/PayOrderController.java

@@ -18,6 +18,7 @@ import com.google.common.collect.Maps;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -49,6 +50,9 @@ public class PayOrderController {
     @Resource
     private PayAppService appService;
 
+
+
+
     @GetMapping("/get")
     @Operation(summary = "获得支付订单")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
@@ -101,7 +105,11 @@ public class PayOrderController {
 
         // 拼接返回
         Map<Long, PayAppDO> appMap = appService.getAppMap(convertList(pageResult.getList(), PayOrderDO::getAppId));
-        return success(PayOrderConvert.INSTANCE.convertPage(pageResult, appMap));
+        PageResult<PayOrderPageItemRespVO> data = PayOrderConvert.INSTANCE.convertPage(pageResult, appMap);
+//        List<PayOrderPageItemRespVO> list = tradeOrderQueryService.getOrderNoAndPicUrl(data.getList());
+//        data.setList(list);
+
+        return success(data);
     }
 
     @GetMapping("/export-excel")
@@ -109,7 +117,7 @@ public class PayOrderController {
     @PreAuthorize("@ss.hasPermission('pay:order:export')")
     @OperateLog(type = EXPORT)
     public void exportOrderExcel(@Valid PayOrderExportReqVO exportReqVO,
-            HttpServletResponse response) throws IOException {
+                                 HttpServletResponse response) throws IOException {
         List<PayOrderDO> list = orderService.getOrderList(exportReqVO);
         if (CollectionUtil.isEmpty(list)) {
             ExcelUtils.write(response, "支付订单.xls", "数据",

+ 9 - 1
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/admin/order/vo/PayOrderPageItemRespVO.java

@@ -20,6 +20,14 @@ public class PayOrderPageItemRespVO extends PayOrderBaseVO {
     private LocalDateTime createTime;
 
     @Schema(description = "应用名称", example = "wx_pay")
-    private String  appName;
+    private String appName;
+
+
+    @Schema(description = "订单编号", example = "wx_pay")
+    private String orderNo;
+
+    @Schema(description = "商品图片", example = "wx_pay")
+    private String picUrl;
+
 
 }

+ 5 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/convert/order/PayOrderConvert.java

@@ -45,6 +45,11 @@ public interface PayOrderConvert {
 
     default PageResult<PayOrderPageItemRespVO> convertPage(PageResult<PayOrderDO> page, Map<Long, PayAppDO> appMap) {
         PageResult<PayOrderPageItemRespVO> result = convertPage(page);
+        List<PayOrderPageItemRespVO> list = result.getList();
+
+
+
+
         result.getList().forEach(order -> MapUtils.findAndThen(appMap, order.getAppId(), app -> order.setAppName(app.getName())));
         return result;
     }

+ 7 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderService.java

@@ -146,4 +146,11 @@ public interface PayOrderService {
      */
     int expireOrder();
 
+    /**
+     * 根据订单ID获取支付ID
+     * @param id
+     * @return
+     */
+    PayOrderDO getOrderByTradeOrderId(Long id);
+
 }

+ 6 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/order/PayOrderServiceImpl.java

@@ -31,6 +31,7 @@ import cn.newfeifan.mall.module.pay.framework.pay.config.PayProperties;
 import cn.newfeifan.mall.module.pay.service.app.PayAppService;
 import cn.newfeifan.mall.module.pay.service.channel.PayChannelService;
 import cn.newfeifan.mall.module.pay.service.notify.PayNotifyService;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.google.common.annotations.VisibleForTesting;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -505,6 +506,11 @@ public class PayOrderServiceImpl implements PayOrderService {
         return count;
     }
 
+    @Override
+    public PayOrderDO getOrderByTradeOrderId(Long id) {
+        return   orderMapper.selectOne(new LambdaQueryWrapper<PayOrderDO>().eq(PayOrderDO::getMerchantOrderId,id));
+    }
+
     /**
      * 同步单个支付单
      *

+ 2 - 0
feifan-module-system/feifan-module-system-api/src/main/java/cn/newfeifan/mall/module/system/enums/permission/RoleCodeEnum.java

@@ -13,6 +13,8 @@ public enum RoleCodeEnum {
 
     SUPER_ADMIN("super_admin", "超级管理员"),
     TENANT_ADMIN("tenant_admin", "租户管理员"),
+    MERCHANT_ADMIN("merchant_admin", "商户管理员"),
+    SHOP_ADMIN("shop_admin", "店铺管理员"),
     ;
 
     /**

+ 4 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuListReqVO.java

@@ -13,4 +13,8 @@ public class MenuListReqVO {
     @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
     private Integer status;
 
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
+
+
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuRespVO.java

@@ -68,5 +68,6 @@ public class MenuRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuSaveVO.java

@@ -61,5 +61,6 @@ public class MenuSaveVO {
 
     @Schema(description = "是否总是显示", example = "false")
     private Boolean alwaysShow;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/menu/MenuSimpleRespVO.java

@@ -22,5 +22,6 @@ public class MenuSimpleRespVO {
 
     @Schema(description = "类型,参见 MenuTypeEnum 枚举类", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer type;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 3 - 0
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RolePageReqVO.java

@@ -28,4 +28,7 @@ public class RolePageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleRespVO.java

@@ -53,5 +53,6 @@ public class RoleRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "时间戳格式")
     private LocalDateTime createTime;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleSaveReqVO.java

@@ -30,5 +30,6 @@ public class RoleSaveReqVO {
 
     @Schema(description = "备注", example = "我是一个角色")
     private String remark;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleSimpleRespVO.java

@@ -14,5 +14,6 @@ public class RoleSimpleRespVO {
 
     @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "非繁")
     private String name;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/controller/admin/permission/vo/role/RoleUpdateStatusReqVO.java

@@ -19,5 +19,6 @@ public class RoleUpdateStatusReqVO {
     @NotNull(message = "状态不能为空")
     @InEnum(value = CommonStatusEnum.class, message = "修改状态必须是 {value}")
     private Integer status;
-
+    @Schema(description = "用户类型", example = "1")
+    private Long categoryId;
 }

Some files were not shown because too many files changed in this diff