From 1cda9be49d77c83bdab4cfea7e3558fd4064bdb1 Mon Sep 17 00:00:00 2001
From: seatonwan9
Date: 星期四, 28 八月 2025 02:03:11 +0800
Subject: [PATCH] 更新代码

---
 src/main/java/com/webmanage/entity/PointsRule.java                       |    2 
 src/main/java/com/webmanage/dto/CreateOrderDTO.java                      |    6 
 src/main/java/com/webmanage/controller/PointsController.java             |    2 
 src/main/java/com/webmanage/service/UserPointsService.java               |    6 
 src/main/java/com/webmanage/entity/Points.java                           |    2 
 src/main/java/com/webmanage/entity/OrderInfo.java                        |   10 
 src/main/java/com/webmanage/mapper/UserPointsMapper.java                 |    4 
 src/main/java/com/webmanage/entity/UserPoints.java                       |    6 
 src/main/resources/mapper/ProductMapper.xml                              |   80 +++
 src/main/java/com/webmanage/service/ProductPricingService.java           |    2 
 src/main/java/com/webmanage/controller/CartController.java               |   44 +-
 src/main/resources/mapper/ApprovalRecordMapper.xml                       |   10 
 src/main/java/com/webmanage/mapper/ReportResultSubmissionMapper.java     |   30 +
 src/main/java/com/webmanage/service/impl/CartServiceImpl.java            |   60 +-
 src/main/java/com/webmanage/dto/PointsFlowQueryDTO.java                  |    4 
 src/main/java/com/webmanage/entity/OrderEvaluation.java                  |    2 
 src/main/resources/mapper/UserPointsMapper.xml                           |    4 
 src/main/java/com/webmanage/service/impl/UserPointsServiceImpl.java      |    6 
 src/main/resources/mapper/OrderAttachmentMapper.xml                      |    2 
 src/main/java/com/webmanage/dto/AddPointsFlowDTO.java                    |   16 
 src/main/java/com/webmanage/service/PointsFlowService.java               |    2 
 src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java       |  196 +++++++++
 src/main/java/com/webmanage/vo/OrderDetailVO.java                        |    8 
 src/main/java/com/webmanage/dto/CreateOrderItemDTO.java                  |    4 
 src/main/java/com/webmanage/dto/CartItemDTO.java                         |    2 
 src/main/java/com/webmanage/service/CartPersistenceService.java          |    6 
 src/main/java/com/webmanage/controller/ProductPricingController.java     |    5 
 src/main/java/com/webmanage/service/OrderInfoService.java                |   22 
 src/main/java/com/webmanage/mapper/CartMapper.java                       |    8 
 src/main/resources/mapper/OrderInfoMapper.xml                            |  135 ++++++
 src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java      |  196 +++++++--
 src/main/java/com/webmanage/mapper/ProductPricingMapper.java             |    2 
 src/main/resources/mapper/ProductPricingMapper.xml                       |   10 
 src/main/resources/mapper/ReportResultSubmissionMapper.xml               |   24 +
 src/main/java/com/webmanage/entity/PointsFlow.java                       |    6 
 src/main/java/com/webmanage/mapper/OrderInfoMapper.java                  |   28 +
 src/main/java/com/webmanage/controller/OrderController.java              |   35 +
 src/main/java/com/webmanage/entity/Cart.java                             |    8 
 src/main/java/com/webmanage/vo/OrderDetailItemVO.java                    |    4 
 src/main/java/com/webmanage/service/impl/CartPersistenceServiceImpl.java |   11 
 src/main/resources/mapper/PointsMapper.xml                               |    2 
 src/main/java/com/webmanage/entity/ApprovalRecord.java                   |    2 
 src/main/java/com/webmanage/entity/ReportResultSubmission.java           |  105 +++++
 src/main/java/com/webmanage/service/impl/ProductPricingServiceImpl.java  |    5 
 src/main/resources/mapper/CartMapper.xml                                 |   42 +
 src/main/resources/mapper/OrderEvaluationMapper.xml                      |    2 
 src/main/java/com/webmanage/entity/Product.java                          |    2 
 src/main/java/com/webmanage/vo/CartVO.java                               |    4 
 src/main/java/com/webmanage/entity/OrderApproval.java                    |    2 
 src/main/java/com/webmanage/entity/ProductPricing.java                   |    6 
 src/main/java/com/webmanage/service/CartService.java                     |   24 
 src/main/java/com/webmanage/entity/OrderAttachment.java                  |    2 
 src/main/java/com/webmanage/entity/OrderDetail.java                      |    6 
 src/main/java/com/webmanage/vo/CartItemVO.java                           |    2 
 src/main/java/com/webmanage/dto/OrderQueryDTO.java                       |   19 
 src/main/resources/mapper/OrderDetailMapper.xml                          |    2 
 56 files changed, 996 insertions(+), 241 deletions(-)

diff --git a/src/main/java/com/webmanage/controller/CartController.java b/src/main/java/com/webmanage/controller/CartController.java
index 1452cfc..350e3a7 100644
--- a/src/main/java/com/webmanage/controller/CartController.java
+++ b/src/main/java/com/webmanage/controller/CartController.java
@@ -35,8 +35,8 @@
     @PostMapping("/add")
     @ApiOperation("娣诲姞鍟嗗搧鍒拌喘鐗╄溅")
     public Result<Object> addToCart(@Valid @RequestBody CartItemDTO cartItemDTO,
-                                   @RequestParam @NotNull Long userId,
-                                   @RequestParam @NotNull Long unitId) {
+                                   @RequestParam @NotNull String userId,
+                                   @RequestParam String unitId) {
         try {
             boolean result = cartService.addToCart(userId, unitId, cartItemDTO);
             if (result) {
@@ -52,8 +52,8 @@
     
     @DeleteMapping("/remove")
     @ApiOperation("浠庤喘鐗╄溅绉婚櫎鍟嗗搧")
-    public Result<Object> removeFromCart(@RequestParam @NotNull Long userId,
-                                        @RequestParam @NotNull Long unitId,
+    public Result<Object> removeFromCart(@RequestParam @NotNull String userId,
+                                        @RequestParam  String unitId,
                                         @RequestParam @NotNull Long pricingId) {
         try {
             boolean result = cartService.removeFromCart(userId, unitId, pricingId);
@@ -70,8 +70,8 @@
     
     @PutMapping("/update")
     @ApiOperation("鏇存柊璐墿杞﹀晢鍝佹暟閲�")
-    public Result<Object> updateCartItemQuantity(@RequestParam @NotNull Long userId,
-                                               @RequestParam @NotNull Long unitId,
+    public Result<Object> updateCartItemQuantity(@RequestParam @NotNull String userId,
+                                               @RequestParam  String unitId,
                                                @RequestParam @NotNull Long pricingId,
                                                @RequestParam @NotNull @Min(1) Integer quantity) {
         try {
@@ -89,8 +89,8 @@
     
     @DeleteMapping("/clear")
     @ApiOperation("娓呯┖璐墿杞�")
-    public Result<Object> clearCart(@RequestParam @NotNull Long userId,
-                                   @RequestParam @NotNull Long unitId) {
+    public Result<Object> clearCart(@RequestParam @NotNull String userId,
+                                   @RequestParam  String unitId) {
         try {
             boolean result = cartService.clearCart(userId, unitId);
             if (result) {
@@ -106,8 +106,8 @@
     
     @GetMapping("/info")
     @ApiOperation("鑾峰彇璐墿杞︿俊鎭�")
-    public Result<Object> getCart(@RequestParam @NotNull Long userId,
-                                 @RequestParam @NotNull Long unitId) {
+    public Result<Object> getCart(@RequestParam @NotNull String userId,
+                                 @RequestParam  String unitId) {
         try {
             CartVO cart = cartService.getCart(userId, unitId);
             return Result.success(cart);
@@ -119,8 +119,8 @@
     
     @GetMapping("/items")
     @ApiOperation("鑾峰彇璐墿杞﹀晢鍝佸垪琛�")
-    public Result<Object> getCartItems(@RequestParam @NotNull Long userId,
-                                      @RequestParam @NotNull Long unitId) {
+    public Result<Object> getCartItems(@RequestParam @NotNull String userId,
+                                      @RequestParam  String unitId) {
         try {
             List<CartItemVO> items = cartService.getCartItems(userId, unitId);
             return Result.success(items);
@@ -132,8 +132,8 @@
     
     @DeleteMapping("/batch-remove")
     @ApiOperation("鎵归噺鍒犻櫎璐墿杞﹀晢鍝�")
-    public Result<Object> batchRemoveFromCart(@RequestParam @NotNull Long userId,
-                                             @RequestParam @NotNull Long unitId,
+    public Result<Object> batchRemoveFromCart(@RequestParam @NotNull String userId,
+                                             @RequestParam  String unitId,
                                              @RequestBody List<Long> pricingIds) {
         try {
             boolean result = cartService.batchRemoveFromCart(userId, unitId, pricingIds);
@@ -150,8 +150,8 @@
     
     @GetMapping("/count")
     @ApiOperation("鑾峰彇璐墿杞﹀晢鍝佹暟閲�")
-    public Result<Object> getCartItemCount(@RequestParam @NotNull Long userId,
-                                          @RequestParam @NotNull Long unitId) {
+    public Result<Object> getCartItemCount(@RequestParam @NotNull String userId,
+                                          @RequestParam  String unitId) {
         try {
             Integer count = cartService.getCartItemCount(userId, unitId);
             return Result.success(count);
@@ -163,8 +163,8 @@
     
     @PostMapping("/sync-to-db")
     @ApiOperation("鍚屾Redis璐墿杞︽暟鎹埌鏁版嵁搴�")
-    public Result<Object> syncCartToDatabase(@RequestParam @NotNull Long userId,
-                                            @RequestParam @NotNull Long unitId) {
+    public Result<Object> syncCartToDatabase(@RequestParam @NotNull String userId,
+                                            @RequestParam @NotNull String unitId) {
         try {
             boolean result = cartService.syncCartToDatabase(userId, unitId);
             if (result) {
@@ -180,8 +180,8 @@
     
     @PostMapping("/load-from-db")
     @ApiOperation("浠庢暟鎹簱鍔犺浇璐墿杞︽暟鎹埌Redis")
-    public Result<Object> loadCartFromDatabase(@RequestParam @NotNull Long userId,
-                                              @RequestParam @NotNull Long unitId) {
+    public Result<Object> loadCartFromDatabase(@RequestParam @NotNull String userId,
+                                              @RequestParam @NotNull String unitId) {
         try {
             boolean result = cartService.loadCartFromDatabase(userId, unitId);
             if (result) {
@@ -197,8 +197,8 @@
     
     @GetMapping("/consistency")
     @ApiOperation("妫�鏌ヨ喘鐗╄溅鏁版嵁涓�鑷存��")
-    public Result<Object> checkCartConsistency(@RequestParam @NotNull Long userId,
-                                              @RequestParam @NotNull Long unitId) {
+    public Result<Object> checkCartConsistency(@RequestParam @NotNull String userId,
+                                              @RequestParam @NotNull String unitId) {
         try {
             boolean isConsistent = cartService.checkCartConsistency(userId, unitId);
             if (isConsistent) {
diff --git a/src/main/java/com/webmanage/controller/OrderController.java b/src/main/java/com/webmanage/controller/OrderController.java
index f66ad4d..baeb5f9 100644
--- a/src/main/java/com/webmanage/controller/OrderController.java
+++ b/src/main/java/com/webmanage/controller/OrderController.java
@@ -43,6 +43,13 @@
         catch (Exception e) { log.error("鏌ヨ涔板璁㈠崟鍒楄〃澶辫触", e); return Result.error("鏌ヨ涔板璁㈠崟鍒楄〃澶辫触锛�" + e.getMessage()); }
     }
 
+    @PostMapping("/buyer/page/with-product-conditions")
+    @ApiOperation("鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級")
+    public Result<Object> getBuyerOrderPageWithProductConditions(@Valid @RequestBody OrderQueryDTO queryDTO) {
+        try { return Result.success(orderInfoService.getBuyerOrderPageWithProductConditions(queryDTO)); }
+        catch (Exception e) { log.error("鏌ヨ涔板璁㈠崟鍒楄〃澶辫触", e); return Result.error("鏌ヨ涔板璁㈠崟鍒楄〃澶辫触锛�" + e.getMessage()); }
+    }
+
     @PostMapping("/create")
     @ApiOperation("鍒涘缓璁㈠崟锛堝寘鍚鍗曡鎯咃級锛岄渶鍦� Header 鎼哄甫 Idempotency-Token 闃查噸澶嶆彁浜�")
     public Result<OrderInfo> createOrder(@RequestHeader(value = "Idempotency-Token", required = false) String token,
@@ -119,6 +126,20 @@
                 return Result.error("鎻愪緵鑰匢D涓嶈兘涓虹┖");
             }
             return Result.success(orderInfoService.getSellerOrderPage(queryDTO));
+        } catch (Exception e) {
+            log.error("鏌ヨ鍗栧璁㈠崟鍒楄〃澶辫触", e);
+            return Result.error("鏌ヨ鍗栧璁㈠崟鍒楄〃澶辫触锛�" + e.getMessage());
+        }
+    }
+
+    @PostMapping("/seller/page/with-product-conditions")
+    @ApiOperation("鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級")
+    public Result<Object> getSellerOrderPageWithProductConditions(@Valid @RequestBody OrderQueryDTO queryDTO) {
+        try {
+            if (queryDTO.getProviderId() == null) {
+                return Result.error("鎻愪緵鑰匢D涓嶈兘涓虹┖");
+            }
+            return Result.success(orderInfoService.getSellerOrderPageWithProductConditions(queryDTO));
         } catch (Exception e) {
             log.error("鏌ヨ鍗栧璁㈠崟鍒楄〃澶辫触", e);
             return Result.error("鏌ヨ鍗栧璁㈠崟鍒楄〃澶辫触锛�" + e.getMessage());
@@ -290,6 +311,20 @@
         }
     }
 
+    @PostMapping("/workflow/update")
+    @ApiOperation("鏍规嵁璁㈠崟ID鏇存柊宸ヤ綔娴両D锛坵orkflow_id锛�")
+    public Result<Boolean> updateWorkflowId(
+            @ApiParam("璁㈠崟ID") @RequestParam @NotBlank String orderId,
+            @ApiParam("宸ヤ綔娴両D") @RequestParam @NotBlank String workflowId) {
+        try {
+            boolean result = orderInfoService.updateWorkflowId(orderId, workflowId);
+            return result ? Result.success(true) : Result.error("鏇存柊宸ヤ綔娴両D澶辫触");
+        } catch (Exception e) {
+            log.error("鏇存柊宸ヤ綔娴両D澶辫触锛岃鍗旾D: {}", orderId, e);
+            return Result.error("鏇存柊宸ヤ綔娴両D澶辫触锛�" + e.getMessage());
+        }
+    }
+
     @GetMapping("/agreement/check/{orderId}")
     @ApiOperation("妫�鏌ヨ鍗曟槸鍚﹀寘鍚崗璁被鍨嬬殑瀛愯鍗�")
     public Result<Boolean> checkAgreementPriceType(
diff --git a/src/main/java/com/webmanage/controller/PointsController.java b/src/main/java/com/webmanage/controller/PointsController.java
index 8f4214f..837b163 100644
--- a/src/main/java/com/webmanage/controller/PointsController.java
+++ b/src/main/java/com/webmanage/controller/PointsController.java
@@ -250,7 +250,7 @@
 
     @GetMapping("/total/user/{userId}")
     @ApiOperation("鑾峰彇鐢ㄦ埛绉垎缁熻")
-    public Result<UserPoints> getUserPointsTotal(@ApiParam("鐢ㄦ埛ID") @PathVariable Long userId) {
+    public Result<UserPoints> getUserPointsTotal(@ApiParam("鐢ㄦ埛ID") @PathVariable String userId) {
         try {
             UserPoints userPoints = pointsFlowService.getUserPointsTotal(userId);
             return Result.success(userPoints);
diff --git a/src/main/java/com/webmanage/controller/ProductPricingController.java b/src/main/java/com/webmanage/controller/ProductPricingController.java
index 1ca6f19..6432aea 100644
--- a/src/main/java/com/webmanage/controller/ProductPricingController.java
+++ b/src/main/java/com/webmanage/controller/ProductPricingController.java
@@ -10,6 +10,7 @@
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -107,9 +108,9 @@
      */
     @GetMapping("/product/{productId}")
     @ApiOperation("鏍规嵁浜у搧ID鏌ヨ瀹氫环鍒楄〃")
-    public Result<List<ProductPricing>> getPricingByProductId(@ApiParam("浜у搧ID") @PathVariable Long productId) {
+    public Result<List<ProductPricing>> getPricingByProductId(@ApiParam("浜у搧ID") @PathVariable String productId) {
         try {
-            if (productId == null) {
+            if (!StringUtils.hasText(productId)) {
                 return Result.error("浜у搧ID涓嶈兘涓虹┖");
             }
             List<ProductPricing> result = productPricingService.getPricingByProductId(productId);
diff --git a/src/main/java/com/webmanage/dto/AddPointsFlowDTO.java b/src/main/java/com/webmanage/dto/AddPointsFlowDTO.java
index 4712c53..14b863a 100644
--- a/src/main/java/com/webmanage/dto/AddPointsFlowDTO.java
+++ b/src/main/java/com/webmanage/dto/AddPointsFlowDTO.java
@@ -15,12 +15,13 @@
 public class AddPointsFlowDTO {
 
     @ApiModelProperty("鐢ㄦ埛ID")
-    @NotNull(message = "鐢ㄦ埛ID涓嶈兘涓虹┖")
-    private Long userId;
+    private String userId;
+
+    @ApiModelProperty("鎻愪緵鑰匢D")
+    private String providerId;
 
     @ApiModelProperty("鍗曚綅ID")
-    @NotNull(message = "鍗曚綅ID涓嶈兘涓虹┖")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("瑙勫垯绫诲瀷(0鑾峰緱/1娑堣垂)")
     @NotNull(message = "瑙勫垯绫诲瀷涓嶈兘涓虹┖")
@@ -33,13 +34,6 @@
     @ApiModelProperty("绉垎瑙勫垯绫诲埆(璧勬簮璐$尞銆佽祫婧愪紶鎾�佽祫婧愪氦鏄撱�佷氦娴佺ぞ鍖轰簰鍔�)")
     @NotBlank(message = "绉垎瑙勫垯缂栫爜")
     private String ruleNameCode;
-
-    @ApiModelProperty("鏁版嵁绫荤洰)")
-    @NotBlank(message = "鏁版嵁绫荤洰涓嶈兘涓虹┖")
-    private String dataCategoty;
-
-    @ApiModelProperty("鍏宠仈璁㈠崟ID")
-    private String orderId;
 
     @ApiModelProperty("瑙﹀彂娆℃暟(榛樿涓�1)")
     private Integer count = 1;
diff --git a/src/main/java/com/webmanage/dto/CartItemDTO.java b/src/main/java/com/webmanage/dto/CartItemDTO.java
index 8514c92..d87a135 100644
--- a/src/main/java/com/webmanage/dto/CartItemDTO.java
+++ b/src/main/java/com/webmanage/dto/CartItemDTO.java
@@ -21,7 +21,7 @@
 
     @ApiModelProperty("鍟嗗搧ID")
     @NotNull(message = "鍟嗗搧ID涓嶈兘涓虹┖")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("鍟嗗搧鍚嶇О")
     private String productName;
diff --git a/src/main/java/com/webmanage/dto/CreateOrderDTO.java b/src/main/java/com/webmanage/dto/CreateOrderDTO.java
index 8d940ae..18f8b32 100644
--- a/src/main/java/com/webmanage/dto/CreateOrderDTO.java
+++ b/src/main/java/com/webmanage/dto/CreateOrderDTO.java
@@ -17,11 +17,11 @@
 
     @ApiModelProperty("鐢ㄦ埛ID")
     @NotNull(message = "鐢ㄦ埛ID涓嶈兘涓虹┖")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
     @NotNull(message = "鍗曚綅ID涓嶈兘涓虹┖")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("浜у搧鍚嶇О")
     @NotBlank(message = "浜у搧鍚嶇О涓嶈兘涓虹┖")
@@ -31,7 +31,7 @@
     private String providerName;
 
     @ApiModelProperty("鎻愪緵鑰匢D")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("鏀粯鏂瑰紡锛堝锛氱Н鍒�/鐜伴噾/娣峰悎锛�")
     @NotBlank(message = "鏀粯鏂瑰紡涓嶈兘涓虹┖")
diff --git a/src/main/java/com/webmanage/dto/CreateOrderItemDTO.java b/src/main/java/com/webmanage/dto/CreateOrderItemDTO.java
index e34bc55..439c512 100644
--- a/src/main/java/com/webmanage/dto/CreateOrderItemDTO.java
+++ b/src/main/java/com/webmanage/dto/CreateOrderItemDTO.java
@@ -16,7 +16,7 @@
 
     @ApiModelProperty("浜у搧ID")
     @NotNull(message = "浜у搧ID涓嶈兘涓虹┖")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("浜у搧濂椾欢鍚嶇О")
     private String suiteName;
@@ -55,7 +55,7 @@
     private BigDecimal totalPrice;
 
     @ApiModelProperty("浜у搧鎻愪緵鑰匢D")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("浜у搧鎻愪緵鑰呭悕绉�")
     private String providerName;
diff --git a/src/main/java/com/webmanage/dto/OrderQueryDTO.java b/src/main/java/com/webmanage/dto/OrderQueryDTO.java
index 9f96807..0300db9 100644
--- a/src/main/java/com/webmanage/dto/OrderQueryDTO.java
+++ b/src/main/java/com/webmanage/dto/OrderQueryDTO.java
@@ -20,13 +20,13 @@
     private Integer pageSize = 10;
 
     @ApiModelProperty("鐢ㄦ埛ID")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("鎻愪緵鑰匢D")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("璁㈠崟鐘舵��")
     private String orderStatus;
@@ -63,4 +63,17 @@
 
     @ApiModelProperty("鎺掑簭鏂瑰悜(asc/desc)")
     private String orderDirection = "desc";
+    
+    @ApiModelProperty("琛屼笟棰嗗煙ID")
+    private String industryId;
+    
+    @ApiModelProperty("鍗曚綅宸ョ▼ID")
+    private String unitProjectId;
+    
+    @ApiModelProperty("浜у搧绫诲瀷ID")
+    private String productTypeId;
+    
+    @ApiModelProperty("浜у搧绫诲瀷瀛愮骇ID")
+    private String productSubTypeId;
+    
 }
diff --git a/src/main/java/com/webmanage/dto/PointsFlowQueryDTO.java b/src/main/java/com/webmanage/dto/PointsFlowQueryDTO.java
index 98aaa5c..2e28d32 100644
--- a/src/main/java/com/webmanage/dto/PointsFlowQueryDTO.java
+++ b/src/main/java/com/webmanage/dto/PointsFlowQueryDTO.java
@@ -20,10 +20,10 @@
     private Integer pageSize = 10;
 
     @ApiModelProperty("鐢ㄦ埛ID")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("娴佹按绫诲瀷(0鑾峰緱1/娑堣垂)")
     private Integer dataType;
diff --git a/src/main/java/com/webmanage/entity/ApprovalRecord.java b/src/main/java/com/webmanage/entity/ApprovalRecord.java
index 0315756..7384fc0 100644
--- a/src/main/java/com/webmanage/entity/ApprovalRecord.java
+++ b/src/main/java/com/webmanage/entity/ApprovalRecord.java
@@ -13,7 +13,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("approval_record")
+@TableName("tb_approval_record")
 @ApiModel(value = "ApprovalRecord", description = "瀹℃壒璁板綍")
 public class ApprovalRecord {
 
diff --git a/src/main/java/com/webmanage/entity/Cart.java b/src/main/java/com/webmanage/entity/Cart.java
index 5b5c741..0d322a8 100644
--- a/src/main/java/com/webmanage/entity/Cart.java
+++ b/src/main/java/com/webmanage/entity/Cart.java
@@ -14,7 +14,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("cart")
+@TableName("tb_cart")
 @ApiModel(value = "Cart", description = "璐墿杞�")
 public class Cart {
     @ApiModelProperty("涓婚敭ID")
@@ -23,11 +23,11 @@
 
     @ApiModelProperty("鐢ㄦ埛ID")
     @TableField("user_id")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
     @TableField("unit_id")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("鍟嗗搧瀹氫环ID")
     @TableField("pricing_id")
@@ -35,7 +35,7 @@
 
     @ApiModelProperty("鍟嗗搧ID")
     @TableField("product_id")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("鍟嗗搧鍚嶇О")
     @TableField("product_name")
diff --git a/src/main/java/com/webmanage/entity/OrderApproval.java b/src/main/java/com/webmanage/entity/OrderApproval.java
index d4d2558..e14f9c7 100644
--- a/src/main/java/com/webmanage/entity/OrderApproval.java
+++ b/src/main/java/com/webmanage/entity/OrderApproval.java
@@ -13,7 +13,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("order_approval")
+@TableName("tb_order_approval")
 @ApiModel(value = "OrderApproval", description = "璁㈠崟瀹℃壒璁板綍")
 public class OrderApproval {
 
diff --git a/src/main/java/com/webmanage/entity/OrderAttachment.java b/src/main/java/com/webmanage/entity/OrderAttachment.java
index 97b406c..c7774ec 100644
--- a/src/main/java/com/webmanage/entity/OrderAttachment.java
+++ b/src/main/java/com/webmanage/entity/OrderAttachment.java
@@ -13,7 +13,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("order_attachment")
+@TableName("tb_order_attachment")
 @ApiModel(value = "OrderAttachment", description = "璁㈠崟闄勪欢")
 public class OrderAttachment {
 
diff --git a/src/main/java/com/webmanage/entity/OrderDetail.java b/src/main/java/com/webmanage/entity/OrderDetail.java
index f2bb3e4..883abb0 100644
--- a/src/main/java/com/webmanage/entity/OrderDetail.java
+++ b/src/main/java/com/webmanage/entity/OrderDetail.java
@@ -14,7 +14,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("order_detail")
+@TableName("tb_order_detail")
 @ApiModel(value = "OrderDetail", description = "璁㈠崟璇︽儏")
 public class OrderDetail {
 
@@ -32,7 +32,7 @@
 
     @ApiModelProperty("浜у搧ID")
     @TableField("product_id")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("浜у搧濂椾欢鍚嶇О")
     @TableField("suite_name")
@@ -80,7 +80,7 @@
 
     @ApiModelProperty("浜у搧鎻愪緵鑰匢D")
     @TableField("provider_id")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("浜у搧鎻愪緵鑰呭悕绉�")
     @TableField("provider_name")
diff --git a/src/main/java/com/webmanage/entity/OrderEvaluation.java b/src/main/java/com/webmanage/entity/OrderEvaluation.java
index 9ae5922..435635e 100644
--- a/src/main/java/com/webmanage/entity/OrderEvaluation.java
+++ b/src/main/java/com/webmanage/entity/OrderEvaluation.java
@@ -13,7 +13,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("order_evaluation")
+@TableName("tb_order_evaluation")
 @ApiModel(value = "OrderEvaluation", description = "璁㈠崟璇勪环")
 public class OrderEvaluation {
 
diff --git a/src/main/java/com/webmanage/entity/OrderInfo.java b/src/main/java/com/webmanage/entity/OrderInfo.java
index 6ab5947..cdea320 100644
--- a/src/main/java/com/webmanage/entity/OrderInfo.java
+++ b/src/main/java/com/webmanage/entity/OrderInfo.java
@@ -16,7 +16,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("order_info")
+@TableName("tb_order_info")
 public class OrderInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -31,19 +31,19 @@
      * 浜у搧ID
      */
     @TableField("product_id")
-    private Long productId;
+    private String productId;
 
     /**
      * 鐢ㄦ埛ID
      */
     @TableField("user_id")
-    private Long userId;
+    private String userId;
 
     /**
      * 鍗曚綅ID
      */
     @TableField("unit_id")
-    private Long unitId;
+    private String unitId;
 
     /**
      * 浜у搧鍚嶇О
@@ -61,7 +61,7 @@
      * 鎻愪緵鑰匢D
      */
     @TableField("provider_id")
-    private Long providerId;
+    private String providerId;
 
     /**
      * 鐢宠鏃堕棿
diff --git a/src/main/java/com/webmanage/entity/Points.java b/src/main/java/com/webmanage/entity/Points.java
index 40a6f3f..26c691c 100644
--- a/src/main/java/com/webmanage/entity/Points.java
+++ b/src/main/java/com/webmanage/entity/Points.java
@@ -18,7 +18,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("points")
+@TableName("tb_points")
 @ApiModel(value = "Points", description = "绉垎涓昏〃")
 public class Points implements Serializable {
 
diff --git a/src/main/java/com/webmanage/entity/PointsFlow.java b/src/main/java/com/webmanage/entity/PointsFlow.java
index c10a3de..ec717ae 100644
--- a/src/main/java/com/webmanage/entity/PointsFlow.java
+++ b/src/main/java/com/webmanage/entity/PointsFlow.java
@@ -15,7 +15,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("points_flow")
+@TableName("tb_points_flow")
 public class PointsFlow implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -30,13 +30,13 @@
      * 鐢ㄦ埛ID
      */
     @TableField("user_id")
-    private Long userId;
+    private String userId;
 
     /**
      * 鍗曚綅ID
      */
     @TableField("unit_id")
-    private Long unitId;
+    private String unitId;
 
     /**
      * 鏁版嵁绫荤洰
diff --git a/src/main/java/com/webmanage/entity/PointsRule.java b/src/main/java/com/webmanage/entity/PointsRule.java
index 96c2ee7..470a7ac 100644
--- a/src/main/java/com/webmanage/entity/PointsRule.java
+++ b/src/main/java/com/webmanage/entity/PointsRule.java
@@ -18,7 +18,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("points_rule")
+@TableName("tb_points_rule")
 @ApiModel(value = "PointsRule", description = "绉垎瑙勫垯")
 public class PointsRule implements Serializable {
 
diff --git a/src/main/java/com/webmanage/entity/Product.java b/src/main/java/com/webmanage/entity/Product.java
index 13e1f42..fa45a22 100644
--- a/src/main/java/com/webmanage/entity/Product.java
+++ b/src/main/java/com/webmanage/entity/Product.java
@@ -15,7 +15,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("product")
+@TableName("tb_product")
 public class Product implements Serializable {
 
     private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/webmanage/entity/ProductPricing.java b/src/main/java/com/webmanage/entity/ProductPricing.java
index fee2c84..0a0e03b 100644
--- a/src/main/java/com/webmanage/entity/ProductPricing.java
+++ b/src/main/java/com/webmanage/entity/ProductPricing.java
@@ -16,7 +16,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("product_pricing")
+@TableName("tb_product_pricing")
 public class ProductPricing implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -91,7 +91,7 @@
      * 鍏宠仈浜у搧ID
      */
     @TableField("product_id")
-    private Long productId;
+    private String productId;
 
     /**
      * 浜у搧鍚嶇О
@@ -103,7 +103,7 @@
      * 浜у搧鎻愪緵鑰匢D
      */
     @TableField("provider_id")
-    private Long providerId;
+    private String providerId;
 
     /**
      * 浜у搧鎻愪緵鑰呭悕绉�
diff --git a/src/main/java/com/webmanage/entity/ReportResultSubmission.java b/src/main/java/com/webmanage/entity/ReportResultSubmission.java
new file mode 100644
index 0000000..19704fc
--- /dev/null
+++ b/src/main/java/com/webmanage/entity/ReportResultSubmission.java
@@ -0,0 +1,105 @@
+package com.webmanage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 浜у搧淇℃伅琛ㄥ疄浣撶被
+ */
+@Data
+@TableName("tb_report_result_submission")
+public class ReportResultSubmission {
+
+    @TableId(type = IdType.ASSIGN_UUID)
+    private String id;
+
+    private String name;
+
+    private String describe;
+
+    private String sourceId;
+
+    private String sourceName;
+
+    private String schemeId;
+
+    private String schemeName;
+
+    private String industrialChainId;
+
+    private String industrialChainName;
+
+    private String importantAreaId;
+
+    private String importantAreaName;
+
+    private String sceneId;
+
+    private String sceneName;
+
+    private String deptId;
+
+    private String submissionUnit;
+
+    private Integer sort;
+
+    private String status;
+
+    private String approStatus;
+
+    private String createBy;
+
+    private String createUserId;
+
+    private LocalDateTime createTime;
+
+    private String updateBy;
+
+    private String updateUserId;
+
+    private LocalDateTime updateTime;
+
+    private String deleted;
+
+    private String homeImage;
+
+    private String uploadDoc;
+
+    private String uploadVideo;
+
+    private String flowId;
+
+    private String typeId;
+
+    private String typeName;
+
+    private String typeChildId;
+
+    private String typeChildName;
+
+    private String businessProcessId;
+
+    private String businessProcessName;
+
+    private String awardId;
+
+    private String awardName;
+
+    private String dataSource;
+
+    private String importantDistrictId;
+
+    private String importantDistrictName;
+
+    private String unitId;
+
+    private String display;
+
+    private String url1;
+
+    private String importantFullName;
+}
diff --git a/src/main/java/com/webmanage/entity/UserPoints.java b/src/main/java/com/webmanage/entity/UserPoints.java
index 5448b71..120b1c9 100644
--- a/src/main/java/com/webmanage/entity/UserPoints.java
+++ b/src/main/java/com/webmanage/entity/UserPoints.java
@@ -15,7 +15,7 @@
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("user_points")
+@TableName("tb_user_points")
 public class UserPoints implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -30,13 +30,13 @@
      * 鐢ㄦ埛ID
      */
     @TableField("user_id")
-    private Long userId;
+    private String userId;
 
     /**
      * 鍗曚綅ID
      */
     @TableField("unit_id")
-    private Long unitId;
+    private String unitId;
 
     /**
      * 绉垎浣欓
diff --git a/src/main/java/com/webmanage/mapper/CartMapper.java b/src/main/java/com/webmanage/mapper/CartMapper.java
index 5cc4d07..592dc9d 100644
--- a/src/main/java/com/webmanage/mapper/CartMapper.java
+++ b/src/main/java/com/webmanage/mapper/CartMapper.java
@@ -16,22 +16,22 @@
     /**
      * 鏍规嵁鐢ㄦ埛ID鍜屽崟浣岻D鏌ヨ璐墿杞﹀晢鍝佸垪琛�
      */
-    List<Cart> selectByUserIdAndUnitId(@Param("userId") Long userId, @Param("unitId") Long unitId);
+    List<Cart> selectByUserIdAndUnitId(@Param("userId") String userId, @Param("unitId") String unitId);
     
     /**
      * 鏍规嵁鐢ㄦ埛ID銆佸崟浣岻D鍜屽畾浠稩D鏌ヨ璐墿杞﹀晢鍝�
      */
-    Cart selectByUserIdUnitIdAndPricingId(@Param("userId") Long userId, @Param("unitId") Long unitId, @Param("pricingId") Long pricingId);
+    Cart selectByUserIdUnitIdAndPricingId(@Param("userId") String userId, @Param("unitId") String unitId, @Param("pricingId") Long pricingId);
     
     /**
      * 鏍规嵁鐢ㄦ埛ID鍜屽崟浣岻D缁熻璐墿杞﹀晢鍝佹暟閲�
      */
-    Integer countByUserIdAndUnitId(@Param("userId") Long userId, @Param("unitId") Long unitId);
+    Integer countByUserIdAndUnitId(@Param("userId") String userId, @Param("unitId") String unitId);
     
     /**
      * 鏍规嵁鐢ㄦ埛ID鍜屽崟浣岻D璁$畻璐墿杞︽�婚噾棰�
      */
-    java.math.BigDecimal sumTotalAmountByUserIdAndUnitId(@Param("userId") Long userId, @Param("unitId") Long unitId);
+    java.math.BigDecimal sumTotalAmountByUserIdAndUnitId(@Param("userId") String userId, @Param("unitId") String unitId);
 
     Integer deleteByCustomerCondition(@Param("id") Long id);
 }
diff --git a/src/main/java/com/webmanage/mapper/OrderInfoMapper.java b/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
index e019bcb..055b06f 100644
--- a/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
+++ b/src/main/java/com/webmanage/mapper/OrderInfoMapper.java
@@ -16,8 +16,8 @@
     /**
      * 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃
      */
-    IPage<OrderInfo> selectBuyerOrderPage(Page<OrderInfo> page, @Param("userId") Long userId, 
-                                        @Param("unitId") Long unitId, @Param("orderStatus") String orderStatus,
+    IPage<OrderInfo> selectBuyerOrderPage(Page<OrderInfo> page, @Param("userId") String userId,
+                                        @Param("unitId") String unitId, @Param("orderStatus") String orderStatus,
                                         @Param("paymentStatus") String paymentStatus, @Param("paymentType") String paymentType,
                                         @Param("productName") String productName, @Param("providerName") String providerName,
                                         @Param("orderId") String orderId, @Param("applyTimeStart") String applyTimeStart,
@@ -28,7 +28,7 @@
     /**
      * 鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃
      */
-    IPage<OrderInfo> selectSellerOrderPage(Page<OrderInfo> page, @Param("providerId") Long providerId,
+    IPage<OrderInfo> selectSellerOrderPage(Page<OrderInfo> page, @Param("providerId") String providerId,
                                          @Param("orderStatus") String orderStatus, @Param("paymentStatus") String paymentStatus,
                                          @Param("productName") String productName, @Param("orderId") String orderId,
                                          @Param("applyTimeStart") String applyTimeStart, @Param("applyTimeEnd") String applyTimeEnd,
@@ -43,4 +43,26 @@
                                                    @Param("orderId") String orderId, @Param("applyTimeStart") String applyTimeStart,
                                                    @Param("applyTimeEnd") String applyTimeEnd, @Param("orderBy") String orderBy,
                                                    @Param("orderDirection") String orderDirection);
+
+    /**
+     * 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級
+     */
+    IPage<OrderInfo> selectBuyerOrderPageWithProductConditions(Page<OrderInfo> page, @Param("userId") String userId,
+                                        @Param("unitId") String unitId, @Param("orderStatus") String orderStatus,
+                                        @Param("paymentStatus") String paymentStatus, @Param("paymentType") String paymentType,
+                                        @Param("productName") String productName, @Param("providerName") String providerName,
+                                        @Param("orderId") String orderId, @Param("applyTimeStart") String applyTimeStart,
+                                        @Param("applyTimeEnd") String applyTimeEnd, @Param("createTimeStart") String createTimeStart,
+                                        @Param("createTimeEnd") String createTimeEnd, @Param("orderBy") String orderBy,
+                                        @Param("orderDirection") String orderDirection, @Param("productIds") java.util.List<String> productIds);
+
+    /**
+     * 鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級
+     */
+    IPage<OrderInfo> selectSellerOrderPageWithProductConditions(Page<OrderInfo> page, @Param("providerId") String providerId,
+                                         @Param("orderStatus") String orderStatus, @Param("paymentStatus") String paymentStatus,
+                                         @Param("productName") String productName, @Param("orderId") String orderId,
+                                         @Param("applyTimeStart") String applyTimeStart, @Param("applyTimeEnd") String applyTimeEnd,
+                                         @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd,
+                                         @Param("orderBy") String orderBy, @Param("orderDirection") String orderDirection, @Param("productIds") java.util.List<String> productIds);
 }
diff --git a/src/main/java/com/webmanage/mapper/ProductPricingMapper.java b/src/main/java/com/webmanage/mapper/ProductPricingMapper.java
index 19e467b..640a1d7 100644
--- a/src/main/java/com/webmanage/mapper/ProductPricingMapper.java
+++ b/src/main/java/com/webmanage/mapper/ProductPricingMapper.java
@@ -26,7 +26,7 @@
     /**
      * 鏍规嵁浜у搧ID鏌ヨ瀹氫环鍒楄〃
      */
-    List<ProductPricing> selectByProductId(@Param("productId") Long productId);
+    List<ProductPricing> selectByProductId(@Param("productId") String productId);
 
     /**
      * 鏍规嵁鏉′欢鏌ヨ浜у搧瀹氫环
diff --git a/src/main/java/com/webmanage/mapper/ReportResultSubmissionMapper.java b/src/main/java/com/webmanage/mapper/ReportResultSubmissionMapper.java
new file mode 100644
index 0000000..1fef68d
--- /dev/null
+++ b/src/main/java/com/webmanage/mapper/ReportResultSubmissionMapper.java
@@ -0,0 +1,30 @@
+package com.webmanage.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.webmanage.entity.ReportResultSubmission;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 浜у搧淇℃伅琛∕apper鎺ュ彛
+ */
+@Mapper
+public interface ReportResultSubmissionMapper extends BaseMapper<ReportResultSubmission> {
+
+    /**
+     * 鏍规嵁鏉′欢鏌ヨ浜у搧ID鍒楄〃
+     * @param industryId 琛屼笟棰嗗煙ID
+     * @param unitProjectId 鍗曚綅宸ョ▼ID
+     * @param productTypeId 浜у搧绫诲瀷ID
+     * @param productSubTypeId 浜у搧绫诲瀷瀛愮骇ID
+     * @return 浜у搧ID鍒楄〃
+     */
+    List<String> selectProductIdsByConditions(
+        @Param("industryId") String industryId,
+        @Param("unitProjectId") String unitProjectId,
+        @Param("productTypeId") String productTypeId,
+        @Param("productSubTypeId") String productSubTypeId
+    );
+}
diff --git a/src/main/java/com/webmanage/mapper/UserPointsMapper.java b/src/main/java/com/webmanage/mapper/UserPointsMapper.java
index 183ad79..e8ede60 100644
--- a/src/main/java/com/webmanage/mapper/UserPointsMapper.java
+++ b/src/main/java/com/webmanage/mapper/UserPointsMapper.java
@@ -17,10 +17,10 @@
     /**
      * 鏍规嵁鐢ㄦ埛ID鏌ヨ绉垎淇℃伅
      */
-    UserPoints selectByUserId(@Param("userId") Long userId);
+    UserPoints selectByUserId(@Param("userId") String userId);
     
     /**
      * 鏍规嵁鍗曚綅ID鏌ヨ绉垎淇℃伅
      */
-    UserPoints selectByUnitId(@Param("unitId") Long unitId);
+    UserPoints selectByUnitId(@Param("unitId") String unitId);
 }
diff --git a/src/main/java/com/webmanage/service/CartPersistenceService.java b/src/main/java/com/webmanage/service/CartPersistenceService.java
index bd7cb3d..7f51314 100644
--- a/src/main/java/com/webmanage/service/CartPersistenceService.java
+++ b/src/main/java/com/webmanage/service/CartPersistenceService.java
@@ -3,9 +3,9 @@
 import com.webmanage.vo.CartItemVO;
 
 public interface CartPersistenceService {
-    void saveOrUpdate(Long userId, Long unitId, CartItemVO item);
-    void remove(Long userId, Long unitId, Long pricingId);
-    void clear(Long userId, Long unitId);
+    void saveOrUpdate(String userId, String unitId, CartItemVO item);
+    void remove(String userId, String unitId, Long pricingId);
+    void clear(String userId, String unitId);
 }
 
 
diff --git a/src/main/java/com/webmanage/service/CartService.java b/src/main/java/com/webmanage/service/CartService.java
index 58a08bb..027f6f9 100644
--- a/src/main/java/com/webmanage/service/CartService.java
+++ b/src/main/java/com/webmanage/service/CartService.java
@@ -14,60 +14,60 @@
     /**
      * 娣诲姞鍟嗗搧鍒拌喘鐗╄溅锛圧edis + 鏁版嵁搴擄級
      */
-    boolean addToCart(Long userId, Long unitId, CartItemDTO cartItemDTO);
+    boolean addToCart(String userId, String unitId, CartItemDTO cartItemDTO);
     
     /**
      * 浠庤喘鐗╄溅绉婚櫎鍟嗗搧锛圧edis + 鏁版嵁搴擄級
      */
-    boolean removeFromCart(Long userId, Long unitId, Long pricingId);
+    boolean removeFromCart(String userId, String unitId, Long pricingId);
     
     /**
      * 鏇存柊璐墿杞﹀晢鍝佹暟閲忥紙Redis + 鏁版嵁搴擄級
      */
-    boolean updateCartItemQuantity(Long userId, Long unitId, Long pricingId, Integer quantity);
+    boolean updateCartItemQuantity(String userId, String unitId, Long pricingId, Integer quantity);
     
     /**
      * 娓呯┖璐墿杞︼紙Redis + 鏁版嵁搴擄級
      */
-    boolean clearCart(Long userId, Long unitId);
+    boolean clearCart(String userId, String unitId);
     
     /**
      * 鑾峰彇璐墿杞︿俊鎭紙浼樺厛Redis锛屽け璐ュ垯浠庢暟鎹簱鍔犺浇锛�
      */
-    CartVO getCart(Long userId, Long unitId);
+    CartVO getCart(String userId, String unitId);
     
     /**
      * 鑾峰彇璐墿杞﹀晢鍝佸垪琛紙浼樺厛Redis锛屽け璐ュ垯浠庢暟鎹簱鍔犺浇锛�
      */
-    List<CartItemVO> getCartItems(Long userId, Long unitId);
+    List<CartItemVO> getCartItems(String userId, String unitId);
     
     /**
      * 妫�鏌ヨ喘鐗╄溅鍟嗗搧搴撳瓨
      */
-    boolean checkCartItemStock(Long userId, Long unitId, Long pricingId);
+    boolean checkCartItemStock(String userId, String unitId, Long pricingId);
     
     /**
      * 鎵归噺鍒犻櫎璐墿杞﹀晢鍝侊紙Redis + 鏁版嵁搴擄級
      */
-    boolean batchRemoveFromCart(Long userId, Long unitId, List<Long> pricingIds);
+    boolean batchRemoveFromCart(String userId, String unitId, List<Long> pricingIds);
     
     /**
      * 鑾峰彇璐墿杞﹀晢鍝佹暟閲忥紙浼樺厛Redis锛屽け璐ュ垯浠庢暟鎹簱鍔犺浇锛�
      */
-    Integer getCartItemCount(Long userId, Long unitId);
+    Integer getCartItemCount(String userId, String unitId);
     
     /**
      * 浠庢暟鎹簱鍔犺浇璐墿杞︽暟鎹埌Redis
      */
-    boolean loadCartFromDatabase(Long userId, Long unitId);
+    boolean loadCartFromDatabase(String userId, String unitId);
     
     /**
      * 鍚屾Redis鏁版嵁鍒版暟鎹簱
      */
-    boolean syncCartToDatabase(Long userId, Long unitId);
+    boolean syncCartToDatabase(String userId, String unitId);
     
     /**
      * 妫�鏌ヨ喘鐗╄溅鏁版嵁涓�鑷存��
      */
-    boolean checkCartConsistency(Long userId, Long unitId);
+    boolean checkCartConsistency(String userId, String unitId);
 }
diff --git a/src/main/java/com/webmanage/service/OrderInfoService.java b/src/main/java/com/webmanage/service/OrderInfoService.java
index 63de046..a7a367f 100644
--- a/src/main/java/com/webmanage/service/OrderInfoService.java
+++ b/src/main/java/com/webmanage/service/OrderInfoService.java
@@ -18,12 +18,22 @@
     /**
      * 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃
      */
-    PageResult<OrderInfo> getBuyerOrderPage(OrderQueryDTO queryDTO);
+    PageResult<OrderDetailVO> getBuyerOrderPage(OrderQueryDTO queryDTO);
 
     /**
      * 鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃
      */
-    PageResult<OrderInfo> getSellerOrderPage(OrderQueryDTO queryDTO);
+    PageResult<OrderDetailVO> getSellerOrderPage(OrderQueryDTO queryDTO);
+
+    /**
+     * 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級
+     */
+    PageResult<OrderDetailVO> getBuyerOrderPageWithProductConditions(OrderQueryDTO queryDTO);
+
+    /**
+     * 鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級
+     */
+    PageResult<OrderDetailVO> getSellerOrderPageWithProductConditions(OrderQueryDTO queryDTO);
 
     /**
      * 鍒嗛〉鏌ヨ寰呭鎵硅鍗曞垪琛�
@@ -122,4 +132,12 @@
      * @return 鏄惁鍙栨秷鎴愬姛
      */
     boolean cancelOrder(String orderId);
+
+    /**
+     * 鏍规嵁璁㈠崟ID鏇存柊宸ヤ綔娴両D
+     * @param orderId 璁㈠崟ID
+     * @param workflowId 宸ヤ綔娴佸疄渚婭D
+     * @return 鏄惁鏇存柊鎴愬姛
+     */
+    boolean updateWorkflowId(String orderId, String workflowId);
 }
diff --git a/src/main/java/com/webmanage/service/PointsFlowService.java b/src/main/java/com/webmanage/service/PointsFlowService.java
index 75c1211..85c4a47 100644
--- a/src/main/java/com/webmanage/service/PointsFlowService.java
+++ b/src/main/java/com/webmanage/service/PointsFlowService.java
@@ -43,7 +43,7 @@
     /**
      * 鑾峰彇鐢ㄦ埛绉垎缁熻
      */
-    UserPoints getUserPointsTotal(Long userId);
+    UserPoints getUserPointsTotal(String userId);
 
     /**
      * 鑾峰彇鍗曚綅绉垎缁熻
diff --git a/src/main/java/com/webmanage/service/ProductPricingService.java b/src/main/java/com/webmanage/service/ProductPricingService.java
index 1f0b329..2965484 100644
--- a/src/main/java/com/webmanage/service/ProductPricingService.java
+++ b/src/main/java/com/webmanage/service/ProductPricingService.java
@@ -38,7 +38,7 @@
     /**
      * 鏍规嵁浜у搧ID鏌ヨ瀹氫环鍒楄〃
      */
-    List<ProductPricing> getPricingByProductId(Long productId);
+    List<ProductPricing> getPricingByProductId(String productId);
 
     /**
      * 鏍规嵁鏉′欢鏌ヨ浜у搧瀹氫环
diff --git a/src/main/java/com/webmanage/service/UserPointsService.java b/src/main/java/com/webmanage/service/UserPointsService.java
index 390481f..9e6775c 100644
--- a/src/main/java/com/webmanage/service/UserPointsService.java
+++ b/src/main/java/com/webmanage/service/UserPointsService.java
@@ -14,15 +14,15 @@
     /**
      * 鑾峰彇涓汉绉垎缁熻
      */
-    PointsStatsVO getPersonalPointsStats(Long userId);
+    PointsStatsVO getPersonalPointsStats(String userId);
     
     /**
      * 鑾峰彇鍗曚綅绉垎缁熻
      */
-    PointsStatsVO getUnitPointsStats(Long unitId);
+    PointsStatsVO getUnitPointsStats(String unitId);
     
     /**
      * 鏇存柊鐢ㄦ埛绉垎
      */
-    void updateUserPoints(Long userId, Long unitId, Integer points);
+    void updateUserPoints(String userId, String unitId, Integer points);
 }
diff --git a/src/main/java/com/webmanage/service/impl/CartPersistenceServiceImpl.java b/src/main/java/com/webmanage/service/impl/CartPersistenceServiceImpl.java
index cdbe2c2..a41e5a0 100644
--- a/src/main/java/com/webmanage/service/impl/CartPersistenceServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/CartPersistenceServiceImpl.java
@@ -8,6 +8,7 @@
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.AsyncConfigurer;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -20,12 +21,14 @@
 
     @Override
     @Async("asyncExecutor")
-    public void saveOrUpdate(Long userId, Long unitId, CartItemVO item) {
+    public void saveOrUpdate(String userId, String unitId, CartItemVO item) {
         try {
             Cart cart = new Cart();
             BeanUtils.copyProperties(item, cart);
             cart.setUserId(userId);
-            cart.setUnitId(unitId);
+            if(StringUtils.hasText(unitId)){
+                cart.setUnitId(unitId);
+            }
             cart.setUpdateTime(LocalDateTime.now());
             Cart existing = cartMapper.selectByUserIdUnitIdAndPricingId(userId, unitId, item.getPricingId());
             if (existing != null) {
@@ -40,7 +43,7 @@
 
     @Override
     @Async("asyncExecutor")
-    public void remove(Long userId, Long unitId, Long pricingId) {
+    public void remove(String userId, String unitId, Long pricingId) {
         try {
             Cart existing = cartMapper.selectByUserIdUnitIdAndPricingId(userId, unitId, pricingId);
             if (existing != null) {
@@ -51,7 +54,7 @@
 
     @Override
     @Async("asyncExecutor")
-    public void clear(Long userId, Long unitId) {
+    public void clear(String userId, String unitId) {
         try {
             java.util.List<Cart> cartItems = cartMapper.selectByUserIdAndUnitId(userId, unitId);
             for (Cart item : cartItems) {
diff --git a/src/main/java/com/webmanage/service/impl/CartServiceImpl.java b/src/main/java/com/webmanage/service/impl/CartServiceImpl.java
index 7072069..716c8a2 100644
--- a/src/main/java/com/webmanage/service/impl/CartServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/CartServiceImpl.java
@@ -18,6 +18,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -55,7 +56,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean addToCart(Long userId, Long unitId, CartItemDTO cartItemDTO) {
+    public boolean addToCart(String userId, String unitId, CartItemDTO cartItemDTO) {
         try {
             // 楠岃瘉鍟嗗搧瀹氫环鏄惁瀛樺湪
             ProductPricing pricing = productPricingMapper.selectById(cartItemDTO.getPricingId());
@@ -64,7 +65,7 @@
             }
 
             // 鏋勫缓璐墿杞ey
-            String cartKey = buildCartKey(userId, unitId);
+            String cartKey = buildCartKey(userId,unitId);
             String cartItemKey = buildCartItemKey(userId, unitId, cartItemDTO.getPricingId());
 
             // 妫�鏌ュ晢鍝佹槸鍚﹀凡鍦ㄨ喘鐗╄溅涓�
@@ -110,7 +111,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean removeFromCart(Long userId, Long unitId, Long pricingId) {
+    public boolean removeFromCart(String userId, String unitId, Long pricingId) {
         try {
             String cartItemKey = buildCartItemKey(userId, unitId, pricingId);
 
@@ -137,7 +138,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean updateCartItemQuantity(Long userId, Long unitId, Long pricingId, Integer quantity) {
+    public boolean updateCartItemQuantity(String userId, String unitId, Long pricingId, Integer quantity) {
         try {
             if (quantity <= 0) {
                 return removeFromCart(userId, unitId, pricingId);
@@ -171,7 +172,7 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean clearCart(Long userId, Long unitId) {
+    public boolean clearCart(String userId, String unitId) {
         try {
             String cartKey = buildCartKey(userId, unitId);
             List<Long> pricingIds = getCartItemPricingIds(userId, unitId);
@@ -199,12 +200,13 @@
     }
 
     @Override
-    public CartVO getCart(Long userId, Long unitId) {
+    public CartVO getCart(String userId, String unitId) {
         try {
             CartVO cartVO = new CartVO();
             cartVO.setUserId(userId);
-            cartVO.setUnitId(unitId);
-
+            if (StringUtils.hasText(unitId)){
+                cartVO.setUnitId(unitId);
+            }
             List<CartItemVO> items = getCartItems(userId, unitId);
             cartVO.setItems(items);
 
@@ -226,7 +228,7 @@
     }
 
     @Override
-    public List<CartItemVO> getCartItems(Long userId, Long unitId) {
+    public List<CartItemVO> getCartItems(String userId, String unitId) {
         try {
             // 浼樺厛浠嶳edis鑾峰彇
             List<CartItemVO> items = getCartItemsFromRedis(userId, unitId);
@@ -245,14 +247,14 @@
     }
 
     @Override
-    public boolean checkCartItemStock(Long userId, Long unitId, Long pricingId) {
+    public boolean checkCartItemStock(String userId, String unitId, Long pricingId) {
         // TODO: 瀹炵幇搴撳瓨妫�鏌ラ�昏緫
         return true;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean batchRemoveFromCart(Long userId, Long unitId, List<Long> pricingIds) {
+    public boolean batchRemoveFromCart(String userId, String unitId, List<Long> pricingIds) {
         try {
             if (CollectionUtils.isEmpty(pricingIds)) {
                 return true;
@@ -270,7 +272,7 @@
     }
 
     @Override
-    public Integer getCartItemCount(Long userId, Long unitId) {
+    public Integer getCartItemCount(String userId, String unitId) {
         try {
             // 浼樺厛浠嶳edis鑾峰彇
             String cartKey = buildCartKey(userId, unitId);
@@ -288,7 +290,7 @@
     }
 
     @Override
-    public boolean loadCartFromDatabase(Long userId, Long unitId) {
+    public boolean loadCartFromDatabase(String userId, String unitId) {
         try {
             List<Cart> cartItems = cartMapper.selectByUserIdAndUnitId(userId, unitId);
             if (CollectionUtils.isEmpty(cartItems)) {
@@ -319,7 +321,7 @@
     }
 
     @Override
-    public boolean syncCartToDatabase(Long userId, Long unitId) {
+    public boolean syncCartToDatabase(String userId, String unitId) {
         try {
             List<CartItemVO> redisItems = getCartItemsFromRedis(userId, unitId);
             if (CollectionUtils.isEmpty(redisItems)) {
@@ -343,7 +345,7 @@
     }
 
     @Override
-    public boolean checkCartConsistency(Long userId, Long unitId) {
+    public boolean checkCartConsistency(String userId, String unitId) {
         try {
             List<CartItemVO> redisItems = getCartItemsFromRedis(userId, unitId);
             List<Cart> dbItems = cartMapper.selectByUserIdAndUnitId(userId, unitId);
@@ -378,15 +380,21 @@
 
     // ==================== 绉佹湁鏂规硶 ====================
 
-    private String buildCartKey(Long userId, Long unitId) {
-        return CART_KEY_PREFIX + userId + ":" + unitId;
+    private String buildCartKey(String userId, String unitId) {
+        if(StringUtils.hasText(unitId)){
+            return CART_KEY_PREFIX + userId + ":" + unitId;
+        }
+        return CART_KEY_PREFIX + userId;
     }
 
-    private String buildCartItemKey(Long userId, Long unitId, Long pricingId) {
-        return CART_ITEM_KEY_PREFIX + userId + ":" + unitId + ":" + pricingId;
+    private String buildCartItemKey(String userId, String unitId, Long pricingId) {
+        if(StringUtils.hasText(unitId)){
+            return CART_ITEM_KEY_PREFIX + userId + ":" + unitId + ":" + pricingId;
+        }
+        return CART_ITEM_KEY_PREFIX + userId + ":" + pricingId;
     }
 
-    private void updateCartItemList(Long userId, Long unitId, Long pricingId, boolean add) {
+    private void updateCartItemList(String userId, String unitId, Long pricingId, boolean add) {
         String cartKey = buildCartKey(userId, unitId);
         List<Long> pricingIds = (List<Long>) redisTemplate.opsForValue().get(cartKey);
 
@@ -403,13 +411,13 @@
         redisTemplate.opsForValue().set(cartKey, pricingIds, CART_EXPIRE_DAYS, TimeUnit.DAYS);
     }
 
-    private List<Long> getCartItemPricingIds(Long userId, Long unitId) {
+    private List<Long> getCartItemPricingIds(String userId, String unitId) {
         String cartKey = buildCartKey(userId, unitId);
         List<Long> pricingIds = (List<Long>) redisTemplate.opsForValue().get(cartKey);
         return pricingIds != null ? pricingIds : new ArrayList<>();
     }
 
-    private List<CartItemVO> getCartItemsFromRedis(Long userId, Long unitId) {
+    private List<CartItemVO> getCartItemsFromRedis(String userId, String unitId) {
         try {
             String cartKey = buildCartKey(userId, unitId);
             List<Long> pricingIds = (List<Long>) redisTemplate.opsForValue().get(cartKey);
@@ -434,7 +442,7 @@
         }
     }
     
-    private List<CartItemVO> getCartItemsFromDatabase(Long userId, Long unitId) {
+    private List<CartItemVO> getCartItemsFromDatabase(String userId, String unitId) {
         try {
             List<Cart> cartItems = cartMapper.selectByUserIdAndUnitId(userId, unitId);
             List<CartItemVO> items = new ArrayList<>();
@@ -456,7 +464,7 @@
         return itemVO;
     }
     
-    private void syncCartItemToDatabase(Long userId, Long unitId, CartItemVO item) {
+    private void syncCartItemToDatabase(String userId, String unitId, CartItemVO item) {
         try {
             Cart cart = new Cart();
             BeanUtils.copyProperties(item, cart);
@@ -480,7 +488,7 @@
         }
     }
     
-    private void removeCartItemFromDatabase(Long userId, Long unitId, Long pricingId) {
+    private void removeCartItemFromDatabase(String userId, String unitId, Long pricingId) {
         try {
             Cart existingCart = cartMapper.selectByUserIdUnitIdAndPricingId(userId, unitId, pricingId);
             if (existingCart != null) {
@@ -491,7 +499,7 @@
         }
     }
     
-    private void clearCartFromDatabase(Long userId, Long unitId) {
+    private void clearCartFromDatabase(String userId, String unitId) {
         try {
             // 浣跨敤閫昏緫鍒犻櫎
             List<Cart> cartItems = cartMapper.selectByUserIdAndUnitId(userId, unitId);
diff --git a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
index 7ec425c..94a5ab0 100644
--- a/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/OrderInfoServiceImpl.java
@@ -22,6 +22,7 @@
 import com.webmanage.mapper.OrderDetailMapper;
 import com.webmanage.mapper.OrderEvaluationMapper;
 import com.webmanage.mapper.OrderInfoMapper;
+import com.webmanage.mapper.ReportResultSubmissionMapper;
 import com.webmanage.service.OrderInfoService;
 import com.webmanage.service.OrderNoService;
 import com.webmanage.service.MinioService;
@@ -67,8 +68,11 @@
     @Resource
     private MinioService minioService;
 
+    @Resource
+    private ReportResultSubmissionMapper reportResultSubmissionMapper;
+
     @Override
-    public PageResult<OrderInfo> getBuyerOrderPage(OrderQueryDTO queryDTO) {
+    public PageResult<OrderDetailVO> getBuyerOrderPage(OrderQueryDTO queryDTO) {
         // 鍙傛暟鏍¢獙
         if (queryDTO.getUserId() == null) {
             throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖");
@@ -88,10 +92,23 @@
             queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null,
             queryDTO.getOrderBy(), queryDTO.getOrderDirection()
         );
+        // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O
+        List<OrderDetailVO> voList = result.getRecords().stream().map(order -> {
+            OrderDetailVO vo = new OrderDetailVO();
+            BeanUtils.copyProperties(order, vo);
+            List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId());
+            List<OrderDetailItemVO> items = details.stream().map(d -> {
+                OrderDetailItemVO item = new OrderDetailItemVO();
+                BeanUtils.copyProperties(d, item);
+                return item;
+            }).collect(java.util.stream.Collectors.toList());
+            vo.setOrderDetails(items);
+            return vo;
+        }).collect(java.util.stream.Collectors.toList());
 
         // 鏋勫缓杩斿洖缁撴灉
-        return new PageResult<OrderInfo>(
-            result.getRecords(),
+        return new PageResult<OrderDetailVO>(
+            voList,
             result.getTotal(),
             queryDTO.getPageNum().longValue(),
             queryDTO.getPageSize().longValue(),
@@ -100,7 +117,7 @@
     }
 
     @Override
-    public PageResult<OrderInfo> getSellerOrderPage(OrderQueryDTO queryDTO) {
+    public PageResult<OrderDetailVO> getSellerOrderPage(OrderQueryDTO queryDTO) {
         // 鍙傛暟鏍¢獙
         if (queryDTO.getProviderId() == null) {
             throw new BusinessException("鎻愪緵鑰匢D涓嶈兘涓虹┖");
@@ -120,9 +137,23 @@
             queryDTO.getOrderBy(), queryDTO.getOrderDirection()
         );
 
+        // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O
+        List<OrderDetailVO> voList = result.getRecords().stream().map(order -> {
+            OrderDetailVO vo = new OrderDetailVO();
+            BeanUtils.copyProperties(order, vo);
+            List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId());
+            List<OrderDetailItemVO> items = details.stream().map(d -> {
+                OrderDetailItemVO item = new OrderDetailItemVO();
+                BeanUtils.copyProperties(d, item);
+                return item;
+            }).collect(java.util.stream.Collectors.toList());
+            vo.setOrderDetails(items);
+            return vo;
+        }).collect(java.util.stream.Collectors.toList());
+
         // 鏋勫缓杩斿洖缁撴灉
-        return new PageResult<OrderInfo>(
-            result.getRecords(),
+        return new PageResult<OrderDetailVO>(
+            voList,
             result.getTotal(),
             queryDTO.getPageNum().longValue(),
             queryDTO.getPageSize().longValue(),
@@ -147,6 +178,139 @@
         // 鏋勫缓杩斿洖缁撴灉
         return new PageResult<OrderInfo>(
             result.getRecords(),
+            result.getTotal(),
+            queryDTO.getPageNum().longValue(),
+            queryDTO.getPageSize().longValue(),
+            result.getPages()
+        );
+    }
+
+    @Override
+    public PageResult<OrderDetailVO> getBuyerOrderPageWithProductConditions(OrderQueryDTO queryDTO) {
+        // 鍙傛暟鏍¢獙
+        if (queryDTO.getUserId() == null) {
+            throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖");
+        }
+
+        // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃
+        List<String> productIds = null;
+        if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) ||
+            StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) {
+            productIds = reportResultSubmissionMapper.selectProductIdsByConditions(
+                queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), 
+                queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId()
+            );
+            
+            // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋�
+            if (CollectionUtils.isEmpty(productIds)) {
+                return new PageResult<OrderDetailVO>(
+                    java.util.Collections.emptyList(),
+                    0L,
+                    queryDTO.getPageNum().longValue(),
+                    queryDTO.getPageSize().longValue(),
+                    0L
+                );
+            }
+        }
+
+        // 鍒涘缓鍒嗛〉瀵硅薄
+        Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
+
+        // 鎵ц鍒嗛〉鏌ヨ
+        IPage<OrderInfo> result = baseMapper.selectBuyerOrderPageWithProductConditions(
+            page, queryDTO.getUserId(), queryDTO.getUnitId(), queryDTO.getOrderStatus(),
+            queryDTO.getPaymentStatus(), queryDTO.getPaymentType(), queryDTO.getProductName(),
+            queryDTO.getProviderName(), queryDTO.getOrderId(), 
+            queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null,
+            queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null,
+            queryDTO.getCreateTimeStart() != null ? queryDTO.getCreateTimeStart().toString() : null,
+            queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null,
+            queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds
+        );
+
+        // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O
+        List<OrderDetailVO> voList = result.getRecords().stream().map(order -> {
+            OrderDetailVO vo = new OrderDetailVO();
+            BeanUtils.copyProperties(order, vo);
+            List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId());
+            List<OrderDetailItemVO> items = details.stream().map(d -> {
+                OrderDetailItemVO item = new OrderDetailItemVO();
+                BeanUtils.copyProperties(d, item);
+                return item;
+            }).collect(java.util.stream.Collectors.toList());
+            vo.setOrderDetails(items);
+            return vo;
+        }).collect(java.util.stream.Collectors.toList());
+
+        // 鏋勫缓杩斿洖缁撴灉
+        return new PageResult<OrderDetailVO>(
+            voList,
+            result.getTotal(),
+            queryDTO.getPageNum().longValue(),
+            queryDTO.getPageSize().longValue(),
+            result.getPages()
+        );
+    }
+
+    @Override
+    public PageResult<OrderDetailVO> getSellerOrderPageWithProductConditions(OrderQueryDTO queryDTO) {
+        // 鍙傛暟鏍¢獙
+        if (queryDTO.getProviderId() == null) {
+            throw new BusinessException("鎻愪緵鑰匢D涓嶈兘涓虹┖");
+        }
+
+        // 鏍规嵁浜у搧鏉′欢鏌ヨ浜у搧ID鍒楄〃
+        List<String> productIds = null;
+        if (StringUtils.hasText(queryDTO.getIndustryId()) || StringUtils.hasText(queryDTO.getUnitProjectId()) ||
+            StringUtils.hasText(queryDTO.getProductTypeId()) || StringUtils.hasText(queryDTO.getProductSubTypeId())) {
+            productIds = reportResultSubmissionMapper.selectProductIdsByConditions(
+                queryDTO.getIndustryId(), queryDTO.getUnitProjectId(), 
+                queryDTO.getProductTypeId(), queryDTO.getProductSubTypeId()
+            );
+            
+            // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鍝侊紝鐩存帴杩斿洖绌虹粨鏋�
+            if (CollectionUtils.isEmpty(productIds)) {
+                return new PageResult<OrderDetailVO>(
+                    java.util.Collections.emptyList(),
+                    0L,
+                    queryDTO.getPageNum().longValue(),
+                    queryDTO.getPageSize().longValue(),
+                    0L
+                );
+            }
+        }
+
+        // 鍒涘缓鍒嗛〉瀵硅薄
+        Page<OrderInfo> page = new Page<>(queryDTO.getPageNum(), queryDTO.getPageSize());
+
+        // 鎵ц鍒嗛〉鏌ヨ
+        IPage<OrderInfo> result = baseMapper.selectSellerOrderPageWithProductConditions(
+            page, queryDTO.getProviderId(), queryDTO.getOrderStatus(), queryDTO.getPaymentStatus(),
+            queryDTO.getProductName(), queryDTO.getOrderId(),
+            queryDTO.getApplyTimeStart() != null ? queryDTO.getApplyTimeStart().toString() : null,
+            queryDTO.getApplyTimeEnd() != null ? queryDTO.getApplyTimeEnd().toString() : null,
+            queryDTO.getCreateTimeStart() != null ? queryDTO.getCreateTimeStart().toString() : null,
+            queryDTO.getCreateTimeEnd() != null ? queryDTO.getCreateTimeEnd().toString() : null,
+            queryDTO.getOrderBy(), queryDTO.getOrderDirection(), productIds
+        );
+
+        // 灏嗚鍗曚笌璇︽儏鑱旇〃灏佽鍒癡O
+        List<OrderDetailVO> voList = result.getRecords().stream().map(order -> {
+            OrderDetailVO vo = new OrderDetailVO();
+            BeanUtils.copyProperties(order, vo);
+            List<OrderDetail> details = orderDetailMapper.selectByOrderId(order.getOrderId());
+            List<OrderDetailItemVO> items = details.stream().map(d -> {
+                OrderDetailItemVO item = new OrderDetailItemVO();
+                BeanUtils.copyProperties(d, item);
+                return item;
+            }).collect(java.util.stream.Collectors.toList());
+            vo.setOrderDetails(items);
+            return vo;
+        }).collect(java.util.stream.Collectors.toList());
+
+        // 鏋勫缓杩斿洖缁撴灉
+        return new PageResult<OrderDetailVO>(
+            voList,
             result.getTotal(),
             queryDTO.getPageNum().longValue(),
             queryDTO.getPageSize().longValue(),
@@ -940,4 +1104,24 @@
             throw new BusinessException("鍙栨秷璁㈠崟澶辫触锛�" + e.getMessage());
         }
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateWorkflowId(String orderId, String workflowId) {
+        if (!StringUtils.hasText(orderId)) {
+            throw new BusinessException("璁㈠崟ID涓嶈兘涓虹┖");
+        }
+        if (!StringUtils.hasText(workflowId)) {
+            throw new BusinessException("宸ヤ綔娴両D涓嶈兘涓虹┖");
+        }
+
+        OrderInfo orderInfo = this.getById(orderId);
+        if (orderInfo == null) {
+            throw new BusinessException("璁㈠崟涓嶅瓨鍦�");
+        }
+
+        orderInfo.setWorkflowId(workflowId);
+        orderInfo.setUpdatedAt(LocalDateTime.now());
+        return this.updateById(orderInfo);
+    }
 }
diff --git a/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java b/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
index 8cdf5be..b21c1e4 100644
--- a/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/PointsFlowServiceImpl.java
@@ -42,7 +42,7 @@
 
     @Override
     public PageResult<PointsFlow> getPersonalPointsFlowPage(PointsFlowQueryDTO queryDTO) {
-        if (queryDTO.getUserId() == null) {
+        if (!StringUtils.hasText(queryDTO.getUserId())) {
             throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖");
         }
 
@@ -123,68 +123,118 @@
             throw new BusinessException("鍙傛暟涓嶈兘涓虹┖");
         }
 
-        Long userId = addPointsFlowDTO.getUserId();
-        Long unitId = addPointsFlowDTO.getUnitId();
+        String userId = addPointsFlowDTO.getUserId();
+        String providerId = addPointsFlowDTO.getProviderId();
+        String unitId = addPointsFlowDTO.getUnitId();
         Integer ruleType = addPointsFlowDTO.getRuleType();
         String category = addPointsFlowDTO.getCategory();
         String ruleNameCode = addPointsFlowDTO.getRuleNameCode();
         Integer count = addPointsFlowDTO.getCount() != null ? addPointsFlowDTO.getCount() : 1;
 
-        // 鏍规嵁ruleType銆乺uleNameCode銆乧ategory鏌ヨ鐢熸晥鏃堕棿鏈�鏂扮殑绉垎瑙勫垯
-        PointsRule pointsRule = getLatestEffectiveRule(ruleType, ruleNameCode, category);
-        if (pointsRule == null) {
-            throw new BusinessException("绉垎瑙勫垯涓嶅瓨鍦ㄦ垨鏈惎鐢�: ruleType=" + ruleType + ", ruleNameCode=" + ruleNameCode + ", category=" + category);
+        boolean applyUser = StringUtils.hasText(userId) ;
+        boolean applyProvider = StringUtils.hasText(providerId) ;;
+        if (!applyUser && !applyProvider) {
+            throw new BusinessException("userId 涓� providerId 涓嶈兘鍚屾椂涓虹┖");
         }
 
-        // 楠岃瘉瑙勫垯绫诲瀷鏄惁鍖归厤
-        if (!ruleType.equals(pointsRule.getRuleType())) {
-            throw new BusinessException("瑙勫垯绫诲瀷涓嶅尮閰嶏紝鏈熸湜: " + pointsRule.getRuleType() + "锛屽疄闄�: " + ruleType);
+        // 鍒嗗埆鑾峰彇鐢ㄦ埛渚�/鎻愪緵鑰呬晶鏈�鏂扮敓鏁堣鍒欙紙鎸� points_winner 杩囨护锛�1鐢ㄦ埛銆�0鎻愪緵鑰咃級
+        PointsRule userRule = null;
+        PointsRule providerRule = null;
+        if (applyUser) {
+            userRule = getLatestEffectiveRule(ruleType, ruleNameCode, category, 1);
+            if (userRule == null) {
+                throw new BusinessException("鏈壘鍒扮敤鎴蜂晶鐢熸晥瑙勫垯: ruleType=" + ruleType + ", ruleNameCode=" + ruleNameCode + ", category=" + category + ", points_winner=1");
+            }
+            if (!ruleType.equals(userRule.getRuleType())) {
+                throw new BusinessException("鐢ㄦ埛渚ц鍒欑被鍨嬩笉鍖归厤锛屾湡鏈�: " + userRule.getRuleType() + "锛屽疄闄�: " + ruleType);
+            }
+        }
+        if (applyProvider) {
+            providerRule = getLatestEffectiveRule(ruleType, ruleNameCode, category, 0);
+            if (providerRule == null) {
+                throw new BusinessException("鏈壘鍒版彁渚涜�呬晶鐢熸晥瑙勫垯: ruleType=" + ruleType + ", ruleNameCode=" + ruleNameCode + ", category=" + category + ", points_winner=0");
+            }
+            if (!ruleType.equals(providerRule.getRuleType())) {
+                throw new BusinessException("鎻愪緵鑰呬晶瑙勫垯绫诲瀷涓嶅尮閰嶏紝鏈熸湜: " + providerRule.getRuleType() + "锛屽疄闄�: " + ruleType);
+            }
         }
 
-        // 璁$畻绉垎鍊�
-        Integer basePoints = pointsRule.getPointsValue() != null ? pointsRule.getPointsValue() : 0;
-        Integer totalPoints = basePoints * count;
-
-        // 濡傛灉鏄秷璐圭被鍨嬶紝绉垎涓鸿礋鏁�
-        if (ruleType == RuleTypeEnum.CONSUME.getCode()) { // 1琛ㄧず娑堣垂绫诲瀷
-            totalPoints = -totalPoints;
+        // 璁$畻涓や晶绉垎鍙樺寲锛堝悇鑷寜瑙勫垯璁$畻锛�
+        int userPointsChange = 0;
+        int providerPointsChange = 0;
+        if (applyUser) {
+            int base = userRule.getPointsValue() != null ? userRule.getPointsValue() : 0;
+            int amount = base * count;
+            userPointsChange = (ruleType == RuleTypeEnum.CONSUME.getCode()) ? -Math.abs(amount) : Math.abs(amount);
+        }
+        if (applyProvider) {
+            int base = providerRule.getPointsValue() != null ? providerRule.getPointsValue() : 0;
+            int amount = base * count;
+            providerPointsChange = (ruleType == RuleTypeEnum.CONSUME.getCode()) ? -Math.abs(amount) : Math.abs(amount);
         }
 
-        // 妫�鏌ユ瘡鏃ョН鍒嗕笂闄�
-        if (pointsRule.getIsLimit() != null && pointsRule.getIsLimit() == 0) { // 0琛ㄧず鏈夋瘡鏃ヤ笂闄�
-            checkDailyLimitByRule(userId, unitId, pointsRule, totalPoints);
+        // 姣忔棩涓婇檺鏍¢獙锛堝垎鍒牎楠岋級
+        if (applyUser && userRule.getIsLimit() != null && userRule.getIsLimit() == 0) {
+            checkDailyLimitByRule(userId, unitId, userRule, userPointsChange);
+        }
+        if (applyProvider && providerRule.getIsLimit() != null && providerRule.getIsLimit() == 0) {
+            checkDailyLimitByRule(providerId, providerId, providerRule, providerPointsChange);
         }
 
-        // 濡傛灉鏄墸绉垎鎿嶄綔锛屽厛妫�鏌ヤ綑棰濇槸鍚﹁冻澶�
-        if (totalPoints < 0) {
-            checkBalanceSufficient(userId, unitId, Math.abs(totalPoints));
+        // 浣欓鏍¢獙锛堜粎鍦ㄦ墸鍑忔椂锛�
+        if (applyUser && userPointsChange < 0) {
+            checkBalanceSufficient(userId, unitId, Math.abs(userPointsChange));
+        }
+        if (applyProvider && providerPointsChange < 0) {
+            checkBalanceSufficient(providerId, providerId, Math.abs(providerPointsChange));
         }
 
-        // 鍒涘缓绉垎娴佹按璁板綍
-        PointsFlow pointsFlow = new PointsFlow();
-        pointsFlow.setUserId(userId);
-        pointsFlow.setUnitId(unitId);
-        pointsFlow.setDataType(ruleType);
-        pointsFlow.setDataCategory(addPointsFlowDTO.getCategory());
-        pointsFlow.setPoints(totalPoints);
-        pointsFlow.setName(addPointsFlowDTO.getDescription() != null ? addPointsFlowDTO.getDescription() : pointsRule.getRuleDescription());
-        pointsFlow.setFlowTime(LocalDateTime.now());
-        pointsFlow.setRlueId(pointsRule.getId());
+        // 鐢熸垚鐢ㄦ埛渚ф祦姘村苟鏇存柊璐︽埛
+        if (applyUser && userPointsChange != 0) {
+            PointsFlow pointsFlow = new PointsFlow();
+            pointsFlow.setUserId(userId);
+            pointsFlow.setUnitId(unitId);
+            pointsFlow.setDataType(ruleType);
+            pointsFlow.setDataCategory(addPointsFlowDTO.getCategory());
+            pointsFlow.setPoints(userPointsChange);
+            pointsFlow.setName(addPointsFlowDTO.getDescription() != null ? addPointsFlowDTO.getDescription() : userRule.getRuleDescription());
+            pointsFlow.setFlowTime(LocalDateTime.now());
+            pointsFlow.setRlueId(userRule.getId());
 
-        boolean saved = save(pointsFlow);
-        if (!saved) {
-            throw new BusinessException("淇濆瓨绉垎娴佹按澶辫触");
+            boolean saved = save(pointsFlow);
+            if (!saved) {
+                throw new BusinessException("淇濆瓨绉垎娴佹按澶辫触");
+            }
+
+            updateUserPointsByRule(userId, unitId, userPointsChange);
         }
 
-        // 鏇存柊鐢ㄦ埛绉垎璐︽埛
-        updateUserPointsByRule(userId, unitId, totalPoints);
+        // 鐢熸垚鎻愪緵鑰呬晶娴佹按骞舵洿鏂拌处鎴�
+        if (applyProvider && providerPointsChange != 0) {
+            PointsFlow providerFlow = new PointsFlow();
+            providerFlow.setUserId(providerId);
+            providerFlow.setUnitId(providerId);
+            providerFlow.setDataType(ruleType);
+            providerFlow.setDataCategory(addPointsFlowDTO.getCategory());
+            providerFlow.setPoints(providerPointsChange);
+            providerFlow.setName(addPointsFlowDTO.getDescription() != null ? addPointsFlowDTO.getDescription() : providerRule.getRuleDescription());
+            providerFlow.setFlowTime(LocalDateTime.now());
+            providerFlow.setRlueId(providerRule.getId());
+
+            boolean providerSaved = save(providerFlow);
+            if (!providerSaved) {
+                throw new BusinessException("淇濆瓨鎻愪緵鑰呯Н鍒嗘祦姘村け璐�");
+            }
+
+            updateProviderUnitPoints(providerId, providerPointsChange);
+        }
 
         return true;
     }
 
     @Override
-    public UserPoints getUserPointsTotal(Long userId) {
-        if (userId == null) {
+    public UserPoints getUserPointsTotal(String userId) {
+        if (!StringUtils.hasText(userId)) {
             throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓簄ull");
         }
         
@@ -272,9 +322,25 @@
     }
 
     /**
+     * 鏍规嵁ruleType銆乺uleNameCode銆乧ategory銆乸oints_winner鏌ヨ鐢熸晥鏃堕棿鏈�鏂扮殑绉垎瑙勫垯
+     */
+    private PointsRule getLatestEffectiveRule(Integer ruleType, String ruleNameCode, String category, Integer pointsWinner) {
+        QueryWrapper<PointsRule> wrapper = new QueryWrapper<>();
+        wrapper.eq("deleted", 0)
+               .eq("is_enabled", 0)
+               .eq("rule_type", ruleType)
+               .eq("rule_name_code", ruleNameCode)
+               .eq("data_category", category)
+               .eq(pointsWinner != null, "points_winner", pointsWinner)
+               .orderByDesc("created_at")
+               .last("LIMIT 1");
+        return pointsRuleService.getOne(wrapper);
+    }
+
+    /**
      * 妫�鏌ユ瘡鏃ョН鍒嗕笂闄愶紙鍩轰簬瑙勫垯锛�
      */
-    private void checkDailyLimitByRule(Long userId, Long unitId, PointsRule pointsRule, Integer currentPoints) {
+    private void checkDailyLimitByRule(String userId, String unitId, PointsRule pointsRule, Integer currentPoints) {
         // 鑾峰彇浠婃棩寮�濮嬪拰缁撴潫鏃堕棿
         LocalDate today = LocalDate.now();
         LocalDateTime startOfDay = today.atStartOfDay();
@@ -315,7 +381,7 @@
     /**
      * 妫�鏌ョН鍒嗕綑棰濇槸鍚﹁冻澶�
      */
-    private void checkBalanceSufficient(Long userId, Long unitId, Integer requiredPoints) {
+    private void checkBalanceSufficient(String userId, String unitId, Integer requiredPoints) {
         // 妫�鏌ヤ釜浜虹Н鍒嗕綑棰�
         QueryWrapper<UserPoints> userWrapper = new QueryWrapper<>();
         userWrapper.eq("deleted", 0)
@@ -371,7 +437,7 @@
     /**
      * 鏇存柊鐢ㄦ埛绉垎
      */
-    private void updateUserPoints(Long userId, Long unitId, Integer pointsValue) {
+    private void updateUserPoints(String userId, String unitId, Integer pointsValue) {
         // 鏇存柊涓汉绉垎
         QueryWrapper<UserPoints> userWrapper = new QueryWrapper<>();
         userWrapper.eq("deleted", 0)
@@ -412,7 +478,7 @@
     /**
      * 鏍规嵁瑙勫垯鏇存柊鐢ㄦ埛绉垎璐︽埛
      */
-    private void updateUserPointsByRule(Long userId, Long unitId, Integer pointsValue) {
+    private void updateUserPointsByRule(String userId, String unitId, Integer pointsValue) {
         // 鏇存柊涓汉绉垎璐︽埛
         QueryWrapper<UserPoints> userWrapper = new QueryWrapper<>();
         userWrapper.eq("deleted", 0)
@@ -499,4 +565,46 @@
             userPointsMapper.updateById(unitPoints);
         }
     }
+
+    /**
+     * 浠呮洿鏂版彁渚涜�咃紙鍗曚綅锛夌Н鍒嗚处鎴�
+     */
+    private void updateProviderUnitPoints(String providerUnitId, Integer pointsValue) {
+        QueryWrapper<UserPoints> unitWrapper = new QueryWrapper<>();
+        unitWrapper.eq("deleted", 0)
+                  .eq("unit_id", providerUnitId);
+
+        UserPoints unitPoints = userPointsMapper.selectOne(unitWrapper);
+        if (unitPoints == null) {
+            if (pointsValue < 0) {
+                throw new BusinessException("鎻愪緵鑰呯Н鍒嗕綑棰濅笉瓒筹紝鏃犳硶鎵i櫎绉垎");
+            }
+
+            unitPoints = new UserPoints();
+            unitPoints.setUserId(null);
+            unitPoints.setUnitId(providerUnitId);
+            unitPoints.setBalance(pointsValue);
+            unitPoints.setTotalEarned(pointsValue > 0 ? pointsValue : 0);
+            unitPoints.setTotalConsumed(pointsValue < 0 ? Math.abs(pointsValue) : 0);
+            userPointsMapper.insert(unitPoints);
+        } else {
+            if (pointsValue < 0 && unitPoints.getBalance() + pointsValue < 0) {
+                throw new BusinessException("鎻愪緵鑰呯Н鍒嗕綑棰濅笉瓒筹紝褰撳墠浣欓: " + unitPoints.getBalance() + "锛岄渶瑕佹墸闄�: " + Math.abs(pointsValue));
+            }
+
+            unitPoints.setBalance(unitPoints.getBalance() + pointsValue);
+
+            if (pointsValue > 0) {
+                unitPoints.setTotalEarned(unitPoints.getTotalEarned() != null ?
+                        unitPoints.getTotalEarned() + pointsValue : pointsValue);
+            }
+            if (pointsValue < 0) {
+                unitPoints.setTotalConsumed(unitPoints.getTotalConsumed() != null ?
+                        unitPoints.getTotalConsumed() + Math.abs(pointsValue) : Math.abs(pointsValue));
+            }
+
+            unitPoints.setUpdateTime(LocalDateTime.now());
+            userPointsMapper.updateById(unitPoints);
+        }
+    }
 }
diff --git a/src/main/java/com/webmanage/service/impl/ProductPricingServiceImpl.java b/src/main/java/com/webmanage/service/impl/ProductPricingServiceImpl.java
index 0d59412..a5a63ee 100644
--- a/src/main/java/com/webmanage/service/impl/ProductPricingServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/ProductPricingServiceImpl.java
@@ -162,11 +162,8 @@
     }
 
     @Override
-    public List<ProductPricing> getPricingByProductId(Long productId) {
+    public List<ProductPricing> getPricingByProductId(String productId) {
         try {
-            if (productId == null) {
-                throw new BusinessException("浜у搧ID涓嶈兘涓虹┖");
-            }
             return baseMapper.selectByProductId(productId);
         } catch (Exception e) {
             log.error("鏍规嵁浜у搧ID鏌ヨ瀹氫环澶辫触: ", e);
diff --git a/src/main/java/com/webmanage/service/impl/UserPointsServiceImpl.java b/src/main/java/com/webmanage/service/impl/UserPointsServiceImpl.java
index 5b69262..d54e621 100644
--- a/src/main/java/com/webmanage/service/impl/UserPointsServiceImpl.java
+++ b/src/main/java/com/webmanage/service/impl/UserPointsServiceImpl.java
@@ -23,7 +23,7 @@
 public class UserPointsServiceImpl extends ServiceImpl<UserPointsMapper, UserPoints> implements UserPointsService {
     
     @Override
-    public PointsStatsVO getPersonalPointsStats(Long userId) {
+    public PointsStatsVO getPersonalPointsStats(String userId) {
         UserPoints userPoints = this.baseMapper.selectByUserId(userId);
         
         PointsStatsVO statsVO = new PointsStatsVO();
@@ -48,7 +48,7 @@
     }
     
     @Override
-    public PointsStatsVO getUnitPointsStats(Long unitId) {
+    public PointsStatsVO getUnitPointsStats(String unitId) {
         UserPoints userPoints = this.baseMapper.selectByUnitId(unitId);
         
         PointsStatsVO statsVO = new PointsStatsVO();
@@ -86,7 +86,7 @@
     
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateUserPoints(Long userId, Long unitId, Integer points) {
+    public void updateUserPoints(String userId, String unitId, Integer points) {
         // 鏌ヨ鐢ㄦ埛绉垎璁板綍
         LambdaQueryWrapper<UserPoints> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(UserPoints::getUserId, userId);
diff --git a/src/main/java/com/webmanage/vo/CartItemVO.java b/src/main/java/com/webmanage/vo/CartItemVO.java
index ab0275a..240e752 100644
--- a/src/main/java/com/webmanage/vo/CartItemVO.java
+++ b/src/main/java/com/webmanage/vo/CartItemVO.java
@@ -19,7 +19,7 @@
     private Long pricingId;
 
     @ApiModelProperty("鍟嗗搧ID")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("鍟嗗搧鍚嶇О")
     private String productName;
diff --git a/src/main/java/com/webmanage/vo/CartVO.java b/src/main/java/com/webmanage/vo/CartVO.java
index da86729..d81c7bb 100644
--- a/src/main/java/com/webmanage/vo/CartVO.java
+++ b/src/main/java/com/webmanage/vo/CartVO.java
@@ -16,10 +16,10 @@
 public class CartVO {
 
     @ApiModelProperty("鐢ㄦ埛ID")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("璐墿杞﹀晢鍝侀」鍒楄〃")
     private List<CartItemVO> items;
diff --git a/src/main/java/com/webmanage/vo/OrderDetailItemVO.java b/src/main/java/com/webmanage/vo/OrderDetailItemVO.java
index cce4f5b..33a23e5 100644
--- a/src/main/java/com/webmanage/vo/OrderDetailItemVO.java
+++ b/src/main/java/com/webmanage/vo/OrderDetailItemVO.java
@@ -20,7 +20,7 @@
     private Long pricingId;
 
     @ApiModelProperty("浜у搧ID")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("浜у搧濂椾欢鍚嶇О")
     private String suiteName;
@@ -56,7 +56,7 @@
     private BigDecimal totalPrice;
 
     @ApiModelProperty("浜у搧鎻愪緵鑰匢D")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("浜у搧鎻愪緵鑰呭悕绉�")
     private String providerName;
diff --git a/src/main/java/com/webmanage/vo/OrderDetailVO.java b/src/main/java/com/webmanage/vo/OrderDetailVO.java
index 282df60..6e14e2a 100644
--- a/src/main/java/com/webmanage/vo/OrderDetailVO.java
+++ b/src/main/java/com/webmanage/vo/OrderDetailVO.java
@@ -19,13 +19,13 @@
     private String orderId;
 
     @ApiModelProperty("浜у搧ID")
-    private Long productId;
+    private String productId;
 
     @ApiModelProperty("鐢ㄦ埛ID")
-    private Long userId;
+    private String userId;
 
     @ApiModelProperty("鍗曚綅ID")
-    private Long unitId;
+    private String unitId;
 
     @ApiModelProperty("浜у搧鍚嶇О")
     private String productName;
@@ -34,7 +34,7 @@
     private String providerName;
 
     @ApiModelProperty("鎻愪緵鑰匢D")
-    private Long providerId;
+    private String providerId;
 
     @ApiModelProperty("鐢宠鏃堕棿")
     private LocalDateTime applyTime;
diff --git a/src/main/resources/mapper/ApprovalRecordMapper.xml b/src/main/resources/mapper/ApprovalRecordMapper.xml
index 11d9bae..bc7571b 100644
--- a/src/main/resources/mapper/ApprovalRecordMapper.xml
+++ b/src/main/resources/mapper/ApprovalRecordMapper.xml
@@ -30,8 +30,8 @@
 
     <select id="selectApprovalRecordPage" resultMap="BaseResultMap">
         SELECT ar.<include refid="Base_Column_List"/>
-        FROM approval_record ar
-        LEFT JOIN order_info oi ON ar.order_id = oi.order_id
+        FROM tb_approval_record ar
+        LEFT JOIN tb_order_info oi ON ar.order_id = oi.order_id
         WHERE ar.deleted = 0
         <if test="orderId != null and orderId != ''">
             AND ar.order_id = #{orderId}
@@ -80,15 +80,15 @@
 
     <select id="selectByOrderId" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/>
-        FROM approval_record
+        FROM tb_approval_record
         WHERE deleted = 0 AND order_id = #{orderId}
         ORDER BY created_at ASC
     </select>
 
     <select id="selectPendingApprovalPage" resultMap="BaseResultMap">
         SELECT ar.<include refid="Base_Column_List"/>
-        FROM approval_record ar
-        LEFT JOIN order_info oi ON ar.order_id = oi.order_id
+        FROM tb_approval_record ar
+        LEFT JOIN tb_order_info oi ON ar.order_id = oi.order_id
         WHERE ar.deleted = 0 AND ar.approval_result IS NULL
         <if test="orderId != null and orderId != ''">
             AND ar.order_id = #{orderId}
diff --git a/src/main/resources/mapper/CartMapper.xml b/src/main/resources/mapper/CartMapper.xml
index 3d56c30..22f7e4c 100644
--- a/src/main/resources/mapper/CartMapper.xml
+++ b/src/main/resources/mapper/CartMapper.xml
@@ -4,10 +4,10 @@
     
     <resultMap id="BaseResultMap" type="com.webmanage.entity.Cart">
         <id column="id" property="id" jdbcType="BIGINT"/>
-        <result column="user_id" property="userId" jdbcType="BIGINT"/>
-        <result column="unit_id" property="unitId" jdbcType="BIGINT"/>
+        <result column="user_id" property="userId" jdbcType="VARCHAR"/>
+        <result column="unit_id" property="unitId" jdbcType="VARCHAR"/>
         <result column="pricing_id" property="pricingId" jdbcType="BIGINT"/>
-        <result column="product_id" property="productId" jdbcType="BIGINT"/>
+        <result column="product_id" property="productId" jdbcType="VARCHAR"/>
         <result column="product_name" property="productName" jdbcType="VARCHAR"/>
         <result column="suite_name" property="suiteName" jdbcType="VARCHAR"/>
         <result column="sales_form" property="salesForm" jdbcType="VARCHAR"/>
@@ -37,40 +37,48 @@
     
     <select id="selectByUserIdAndUnitId" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/>
-        FROM cart
+        FROM tb_cart
         WHERE deleted = 0 
-        AND user_id = #{userId} 
-        AND unit_id = #{unitId}
+        AND user_id = #{userId}
+        <if test="unitId !=null and unitId != ''">
+            AND unit_id = #{unitId}
+        </if>
         ORDER BY add_time DESC
     </select>
     
     <select id="selectByUserIdUnitIdAndPricingId" resultMap="BaseResultMap">
         SELECT <include refid="Base_Column_List"/>
-        FROM cart
-        WHERE deleted = 0 
-        AND user_id = #{userId} 
-        AND unit_id = #{unitId}
+        FROM tb_cart
+        WHERE deleted = 0
+        AND user_id = #{userId}
+        <if test="unitId != '' and unitId != null">
+            AND unit_id = #{unitId}
+        </if>
         AND pricing_id = #{pricingId}
         LIMIT 1
     </select>
     
     <select id="countByUserIdAndUnitId" resultType="java.lang.Integer">
         SELECT COUNT(*)
-        FROM cart
+        FROM tb_cart
         WHERE deleted = 0 
-        AND user_id = #{userId} 
-        AND unit_id = #{unitId}
+        AND user_id = #{userId}
+        <if test="unitId != '' and unitId != null">
+            AND unit_id = #{unitId}
+        </if>
     </select>
     
     <select id="sumTotalAmountByUserIdAndUnitId" resultType="java.math.BigDecimal">
         SELECT COALESCE(SUM(total_price), 0)
-        FROM cart
+        FROM tb_cart
         WHERE deleted = 0 
-        AND user_id = #{userId} 
-        AND unit_id = #{unitId}
+        AND user_id = #{userId}
+        <if test="unitId != '' and unitId != null">
+            AND unit_id = #{unitId}
+        </if>
     </select>
     <delete id="deleteByCustomerCondition">
-        delete from cart where id = #{id}
+        delete from tb_cart where id = #{id}
     </delete>
     
 </mapper>
diff --git a/src/main/resources/mapper/OrderAttachmentMapper.xml b/src/main/resources/mapper/OrderAttachmentMapper.xml
index 01114a6..7643e8c 100644
--- a/src/main/resources/mapper/OrderAttachmentMapper.xml
+++ b/src/main/resources/mapper/OrderAttachmentMapper.xml
@@ -34,7 +34,7 @@
     <select id="selectByOrderId" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_attachment
+        FROM tb_order_attachment
         WHERE deleted = 0 AND order_id = #{orderId}
         ORDER BY created_at ASC
     </select>
diff --git a/src/main/resources/mapper/OrderDetailMapper.xml b/src/main/resources/mapper/OrderDetailMapper.xml
index ccc67f5..ccc2674 100644
--- a/src/main/resources/mapper/OrderDetailMapper.xml
+++ b/src/main/resources/mapper/OrderDetailMapper.xml
@@ -38,7 +38,7 @@
     <select id="selectByOrderId" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_detail
+        FROM tb_order_detail
         WHERE deleted = 0 AND order_id = #{orderId}
         ORDER BY created_at ASC
     </select>
diff --git a/src/main/resources/mapper/OrderEvaluationMapper.xml b/src/main/resources/mapper/OrderEvaluationMapper.xml
index 8a22960..a41ca54 100644
--- a/src/main/resources/mapper/OrderEvaluationMapper.xml
+++ b/src/main/resources/mapper/OrderEvaluationMapper.xml
@@ -34,7 +34,7 @@
     <select id="selectByOrderId" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_evaluation
+        FROM tb_order_evaluation
         WHERE deleted = 0 AND order_id = #{orderId}
         LIMIT 1
     </select>
diff --git a/src/main/resources/mapper/OrderInfoMapper.xml b/src/main/resources/mapper/OrderInfoMapper.xml
index 0d38b6a..d65043b 100644
--- a/src/main/resources/mapper/OrderInfoMapper.xml
+++ b/src/main/resources/mapper/OrderInfoMapper.xml
@@ -37,12 +37,12 @@
     <select id="selectBuyerOrderPage" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_info
+        FROM tb_order_info
         WHERE deleted = 0
         <if test="userId != null">
             AND user_id = #{userId}
         </if>
-        <if test="unitId != null">
+        <if test="unitId != null and unitId != ''">
             AND unit_id = #{unitId}
         </if>
         <if test="orderStatus != null and orderStatus != ''">
@@ -98,9 +98,9 @@
     <select id="selectSellerOrderPage" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_info
+        FROM tb_order_info
         WHERE deleted = 0
-        <if test="providerId != null">
+        <if test="providerId != null and providerId != ''">
             AND provider_id = #{providerId}
         </if>
         <if test="orderStatus != null and orderStatus != ''">
@@ -150,7 +150,7 @@
     <select id="selectPendingApprovalOrderPage" resultMap="BaseResultMap">
         SELECT
         <include refid="Base_Column_List"/>
-        FROM order_info
+        FROM tb_order_info
         WHERE deleted = 0
         AND order_status IN ('寰呬笂浼犳枃浠�', '寰呮巿鏉�', '寰呬氦鏄撶‘璁�', '宸插畬鎴�', '宸茶瘎浠�')
         <if test="orderStatus != null and orderStatus != ''">
@@ -190,4 +190,129 @@
         </choose>
     </select>
 
+    <!-- 鍒嗛〉鏌ヨ涔板璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級 -->
+    <select id="selectBuyerOrderPageWithProductConditions" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM tb_order_info
+        WHERE deleted = 0
+        <if test="userId != null">
+            AND user_id = #{userId}
+        </if>
+        <if test="unitId != null and unitId != ''">
+            AND unit_id = #{unitId}
+        </if>
+        <if test="orderStatus != null and orderStatus != ''">
+            AND order_status = #{orderStatus}
+        </if>
+        <if test="paymentStatus != null and paymentStatus != ''">
+            AND payment_status = #{paymentStatus}
+        </if>
+        <if test="paymentType != null and paymentType != ''">
+            AND payment_type = #{paymentType}
+        </if>
+        <if test="productName != null and productName != ''">
+            AND product_name LIKE CONCAT('%', #{productName}, '%')
+        </if>
+        <if test="providerName != null and providerName != ''">
+            AND provider_name LIKE CONCAT('%', #{providerName}, '%')
+        </if>
+        <if test="orderId != null and orderId != ''">
+            AND order_id LIKE CONCAT('%', #{orderId}, '%')
+        </if>
+        <if test="applyTimeStart != null and applyTimeStart != ''">
+            AND apply_time >= #{applyTimeStart}::timestamp
+        </if>
+        <if test="applyTimeEnd != null and applyTimeEnd != ''">
+            AND apply_time &lt;= #{applyTimeEnd}::timestamp
+        </if>
+        <if test="createTimeStart != null and createTimeStart != ''">
+            AND created_at >= #{createTimeStart}::timestamp
+        </if>
+        <if test="createTimeEnd != null and createTimeEnd != ''">
+            AND created_at &lt;= #{createTimeEnd}::timestamp
+        </if>
+        <if test="productIds != null and productIds.size() > 0">
+            AND product_id IN
+            <foreach collection="productIds" item="productId" open="(" separator="," close=")">
+                #{productId}
+            </foreach>
+        </if>
+        ORDER BY
+        <choose>
+            <when test="orderBy != null and orderBy != ''">
+                ${orderBy}
+            </when>
+            <otherwise>
+                created_at
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="orderDirection != null and orderDirection == 'asc'">
+                ASC
+            </when>
+            <otherwise>
+                DESC
+            </otherwise>
+        </choose>
+    </select>
+
+    <!-- 鍒嗛〉鏌ヨ鍗栧璁㈠崟鍒楄〃锛堟敮鎸佷骇鍝佹潯浠讹級 -->
+    <select id="selectSellerOrderPageWithProductConditions" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM tb_order_info
+        WHERE deleted = 0
+        <if test="providerId != null and providerId != ''">
+            AND provider_id = #{providerId}
+        </if>
+        <if test="orderStatus != null and orderStatus != ''">
+            AND order_status = #{orderStatus}
+        </if>
+        <if test="paymentStatus != null and paymentStatus != ''">
+            AND payment_status = #{paymentStatus}
+        </if>
+        <if test="productName != null and productName != ''">
+            AND product_name LIKE CONCAT('%', #{productName}, '%')
+        </if>
+        <if test="orderId != null and orderId != ''">
+            AND order_id LIKE CONCAT('%', #{orderId}, '%')
+        </if>
+        <if test="applyTimeStart != null and applyTimeStart != ''">
+            AND apply_time >= #{applyTimeStart}::timestamp
+        </if>
+        <if test="applyTimeEnd != null and applyTimeEnd != ''">
+            AND apply_time &lt;= #{applyTimeEnd}::timestamp
+        </if>
+        <if test="createTimeStart != null and createTimeStart != ''">
+            AND created_at >= #{createTimeStart}::timestamp
+        </if>
+        <if test="createTimeEnd != null and createTimeEnd != ''">
+            AND created_at &lt;= #{createTimeEnd}::timestamp
+        </if>
+        <if test="productIds != null and productIds.size() > 0">
+            AND product_id IN
+            <foreach collection="productIds" item="productId" open="(" separator="," close=")">
+                #{productId}
+            </foreach>
+        </if>
+        ORDER BY
+        <choose>
+            <when test="orderBy != null and orderBy != ''">
+                ${orderBy}
+            </when>
+            <otherwise>
+                created_at
+            </otherwise>
+        </choose>
+        <choose>
+            <when test="orderDirection != null and orderDirection == 'asc'">
+                ASC
+            </when>
+            <otherwise>
+                DESC
+            </otherwise>
+        </choose>
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/PointsMapper.xml b/src/main/resources/mapper/PointsMapper.xml
index 88988e5..5da436a 100644
--- a/src/main/resources/mapper/PointsMapper.xml
+++ b/src/main/resources/mapper/PointsMapper.xml
@@ -5,7 +5,7 @@
     <!-- 鍒嗛〉鏌ヨ绉垎涓昏〃 -->
     <select id="selectPointsMainPage" resultType="com.webmanage.entity.Points">
         SELECT *
-        FROM points
+        FROM tb_points
         WHERE deleted = 0
         <if test="queryDTO.pointsName != null and queryDTO.pointsName != ''">
             AND points_name LIKE CONCAT('%', #{queryDTO.pointsName}, '%')
diff --git a/src/main/resources/mapper/ProductMapper.xml b/src/main/resources/mapper/ProductMapper.xml
new file mode 100644
index 0000000..3902795
--- /dev/null
+++ b/src/main/resources/mapper/ProductMapper.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.webmanage.mapper.ProductMapper">
+
+    <!-- 缁撴灉鏄犲皠 -->
+    <resultMap id="BaseResultMap" type="com.webmanage.entity.Product">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="product_name" property="productName" jdbcType="VARCHAR"/>
+        <result column="product_code" property="productCode" jdbcType="VARCHAR"/>
+        <result column="product_type" property="productType" jdbcType="VARCHAR"/>
+        <result column="category" property="category" jdbcType="VARCHAR"/>
+        <result column="description" property="description" jdbcType="VARCHAR"/>
+        <result column="provider_id" property="providerId" jdbcType="BIGINT"/>
+        <result column="provider_name" property="providerName" jdbcType="VARCHAR"/>
+        <result column="provider_type" property="providerType" jdbcType="VARCHAR"/>
+        <result column="status" property="status" jdbcType="VARCHAR"/>
+        <result column="audit_status" property="auditStatus" jdbcType="VARCHAR"/>
+        <result column="tags" property="tags" jdbcType="VARCHAR"/>
+        <result column="cover_image" property="coverImage" jdbcType="VARCHAR"/>
+        <result column="demo_url" property="demoUrl" jdbcType="VARCHAR"/>
+        <result column="doc_url" property="docUrl" jdbcType="VARCHAR"/>
+        <result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/>
+        <result column="updated_at" property="updatedAt" jdbcType="TIMESTAMP"/>
+        <result column="created_by" property="createdBy" jdbcType="BIGINT"/>
+        <result column="updated_by" property="updatedBy" jdbcType="BIGINT"/>
+        <result column="deleted" property="deleted" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <!-- 鍩虹瀛楁 -->
+    <sql id="Base_Column_List">
+        id, product_name, product_code, product_type, category, description, 
+        provider_id, provider_name, provider_type, status, audit_status, 
+        tags, cover_image, demo_url, doc_url, created_at, updated_at, 
+        created_by, updated_by, deleted
+    </sql>
+
+    <!-- 鏍规嵁鏉′欢鏌ヨ浜у搧鍒楄〃 -->
+    <select id="selectProductList" resultMap="BaseResultMap">
+        SELECT 
+        <include refid="Base_Column_List"/>
+        FROM tb_product
+        WHERE deleted = 0
+        <if test="productName != null and productName != ''">
+            AND product_name LIKE CONCAT('%', #{productName}, '%')
+        </if>
+        <if test="productType != null and productType != ''">
+            AND product_type = #{productType}
+        </if>
+        <if test="status != null and status != ''">
+            AND status = #{status}
+        </if>
+        <if test="providerId != null">
+            AND provider_id = #{providerId}
+        </if>
+        ORDER BY created_at DESC
+    </select>
+
+    <!-- 鏍规嵁ID鏌ヨ浜у搧璇︽儏 -->
+    <select id="selectProductById" resultMap="BaseResultMap">
+        SELECT 
+        <include refid="Base_Column_List"/>
+        FROM tb_product
+        WHERE id = #{id} AND deleted = 0
+    </select>
+
+    <!-- 鏇存柊浜у搧鐘舵�� -->
+    <update id="updateProductStatus">
+        UPDATE tb_product
+        SET status = #{status}, updated_at = CURRENT_TIMESTAMP
+        WHERE id = #{id} AND deleted = 0
+    </update>
+
+    <!-- 鏇存柊浜у搧瀹℃牳鐘舵�� -->
+    <update id="updateProductAuditStatus">
+        UPDATE tb_product
+        SET audit_status = #{auditStatus}, updated_at = CURRENT_TIMESTAMP
+        WHERE id = #{id} AND deleted = 0
+    </update>
+
+</mapper>
diff --git a/src/main/resources/mapper/ProductPricingMapper.xml b/src/main/resources/mapper/ProductPricingMapper.xml
index 1d5398f..fb76f20 100644
--- a/src/main/resources/mapper/ProductPricingMapper.xml
+++ b/src/main/resources/mapper/ProductPricingMapper.xml
@@ -15,9 +15,9 @@
         <result column="points_price" property="pointsPrice" jdbcType="DECIMAL"/>
         <result column="currency_price" property="currencyPrice" jdbcType="DECIMAL"/>
         <result column="is_active" property="isActive" jdbcType="BOOLEAN"/>
-        <result column="product_id" property="productId" jdbcType="BIGINT"/>
+        <result column="product_id" property="productId" jdbcType="VARCHAR"/>
         <result column="product_name" property="productName" jdbcType="VARCHAR"/>
-        <result column="provider_id" property="providerId" jdbcType="BIGINT"/>
+        <result column="provider_id" property="providerId" jdbcType="VARCHAR"/>
         <result column="provider_name" property="providerName" jdbcType="VARCHAR"/>
         <result column="description" property="description" jdbcType="VARCHAR"/>
         <result column="created_at" property="createdAt" jdbcType="TIMESTAMP"/>
@@ -38,7 +38,7 @@
     <select id="selectProductPricingPage" resultMap="BaseResultMap">
         SELECT 
         <include refid="Base_Column_List"/>
-        FROM product_pricing
+        FROM tb_product_pricing
         WHERE deleted = 0
         <if test="productId != null">
             AND product_id = #{productId}
@@ -50,7 +50,7 @@
     <select id="selectByProductId" resultMap="BaseResultMap">
         SELECT 
         <include refid="Base_Column_List"/>
-        FROM product_pricing
+        FROM tb_product_pricing
         WHERE deleted = 0 AND product_id = #{productId}
         ORDER BY created_at DESC
     </select>
@@ -59,7 +59,7 @@
     <select id="selectByCondition" resultMap="BaseResultMap">
         SELECT 
         <include refid="Base_Column_List"/>
-        FROM product_pricing
+        FROM tb_product_pricing
         WHERE deleted = 0
         <if test="suiteName != null and suiteName != ''">
             AND suite_name LIKE CONCAT('%', #{suiteName}, '%')
diff --git a/src/main/resources/mapper/ReportResultSubmissionMapper.xml b/src/main/resources/mapper/ReportResultSubmissionMapper.xml
new file mode 100644
index 0000000..447d8ef
--- /dev/null
+++ b/src/main/resources/mapper/ReportResultSubmissionMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.webmanage.mapper.ReportResultSubmissionMapper">
+
+    <!-- 鏍规嵁鏉′欢鏌ヨ浜у搧ID鍒楄〃 -->
+    <select id="selectProductIdsByConditions" resultType="java.lang.String">
+        SELECT id
+        FROM tb_report_result_submission
+        WHERE deleted = '0'
+        <if test="industryId != null and industryId != ''">
+            AND industrial_chain_id = #{industryId}
+        </if>
+        <if test="unitProjectId != null and unitProjectId != ''">
+            AND important_area_id = #{unitProjectId}
+        </if>
+        <if test="productTypeId != null and productTypeId != ''">
+            AND type_id = #{productTypeId}
+        </if>
+        <if test="productSubTypeId != null and productSubTypeId != ''">
+            AND type_child_id = #{productSubTypeId}
+        </if>
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/UserPointsMapper.xml b/src/main/resources/mapper/UserPointsMapper.xml
index 081cd84..7c7e8ef 100644
--- a/src/main/resources/mapper/UserPointsMapper.xml
+++ b/src/main/resources/mapper/UserPointsMapper.xml
@@ -5,7 +5,7 @@
     <!-- 鏍规嵁鐢ㄦ埛ID鏌ヨ绉垎淇℃伅 -->
     <select id="selectByUserId" resultType="com.webmanage.entity.UserPoints">
         SELECT *
-        FROM user_points
+        FROM tb_user_points
         WHERE user_id = #{userId}
         AND deleted = 0
         LIMIT 1
@@ -14,7 +14,7 @@
     <!-- 鏍规嵁鍗曚綅ID鏌ヨ绉垎淇℃伅 -->
     <select id="selectByUnitId" resultType="com.webmanage.entity.UserPoints">
         SELECT *
-        FROM user_points
+        FROM tb_user_points
         WHERE unit_id = #{unitId}
         AND deleted = 0
         LIMIT 1

--
Gitblit v1.8.0