From 923c8e406c7ab57a728911683f0196a6bb732084 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 09 七月 2025 17:58:21 +0800
Subject: [PATCH] 完成小程序商户端查看订单发货查看物流

---
 framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java                 |    3 
 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java         |   36 +++
 framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java |  227 ++++++++++++++++++++++
 buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java                        |   80 +++++++
 consumer/src/main/resources/application.yml                                                   |  171 ++++++++++++-----
 framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java                   |   23 ++
 lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java                          |    1 
 7 files changed, 488 insertions(+), 53 deletions(-)

diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java
index 51248eb..637d39a 100644
--- a/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/SupplierController.java
@@ -1,6 +1,7 @@
 package cn.lili.controller.lmk;
 
 import cn.lili.common.enums.ResultUtil;
+import cn.lili.common.security.OperationalJudgment;
 import cn.lili.common.security.context.UserContext;
 import cn.lili.common.utils.StringUtils;
 import cn.lili.common.vo.ResultMessage;
@@ -8,16 +9,26 @@
 import cn.lili.modules.goods.service.CategoryService;
 import cn.lili.modules.member.entity.dos.Clerk;
 import cn.lili.modules.member.service.ClerkService;
+import cn.lili.modules.member.service.StoreLogisticsService;
+import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO;
+import cn.lili.modules.order.order.entity.dto.SupplierOrderSearchParams;
+import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
+import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO;
+import cn.lili.modules.order.order.service.OrderService;
 import cn.lili.modules.store.service.StoreDetailService;
+import cn.lili.modules.system.entity.vo.StoreLogisticsVO;
+import cn.lili.utils.COSUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.validation.constraints.NotNull;
 import java.util.List;
 import java.util.Objects;
 
@@ -37,8 +48,22 @@
      */
     @Autowired
     private StoreDetailService storeDetailService;
+    /**
+     * 鐗╂祦鍏徃
+     */
+    @Autowired
+    private StoreLogisticsService storeLogisticsService;
+    /**
+     * 璁㈠崟
+     */
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private COSUtil cosUtil;
     @Autowired
     private ClerkService clerkService;
+
     @ApiOperation(value = "鑾峰彇搴楅摵缁忚惀鐨勫垎绫�")
     @GetMapping(value = "/allCategery")
     public ResultMessage<List<CategoryVO>> getListAll() {
@@ -53,4 +78,53 @@
         String goodsManagementCategory = storeDetailService.getStoreDetail(storeId).getGoodsManagementCategory();
         return ResultUtil.data(this.categoryService.getStoreCategory(goodsManagementCategory.split(",")));
     }
+
+    @ApiOperation(value = "鏌ヨ浼氬憳璁㈠崟鍒楄〃")
+    @GetMapping("/orderList")
+    public ResultMessage<IPage<OrderSimpleXcxVO>> orderList(SupplierOrderSearchParams orderSearchParams) {
+        String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
+        if (StringUtils.isEmpty(storeId)) {
+            Clerk clerk = clerkService.getClerkByMemberId(UserContext.getCurrentUserId());
+            orderSearchParams.setStoreId(clerk.getStoreId());
+        } else {
+            orderSearchParams.setStoreId(storeId);
+        }
+        return ResultUtil.data(orderService.querySupplierOrderParams(orderSearchParams));
+    }
+
+    @ApiOperation(value = "璁㈠崟鏄庣粏")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderSn", value = "璁㈠崟缂栧彿", required = true, dataType = "String", paramType = "path")
+    })
+    @GetMapping(value = "/orderDetail/{orderSn}")
+    public ResultMessage<OrderDetailVO> detail(@NotNull @PathVariable String orderSn) {
+        OperationalJudgment.judgment(orderService.getBySn(orderSn));
+        OrderDetailVO orderDetailVO = orderService.queryDetail(orderSn);
+        orderDetailVO.getOrderItems().forEach(orderItem -> {
+            String image = orderItem.getImage();
+            if (StringUtils.isNotBlank(image) && !image.contains("http")) {
+                orderItem.setImage(cosUtil.getPreviewUrl(image));
+            }
+        });
+        return ResultUtil.data(orderDetailVO);
+    }
+
+    @ApiOperation(value = "鑾峰彇鍟嗗宸查�夋嫨鐗╂祦鍏徃鍒楄〃")
+    @GetMapping("/getChecked")
+    public ResultMessage<List<StoreLogisticsVO>> getChecked() {
+        String storeId = Objects.requireNonNull(UserContext.getCurrentUser()).getStoreId();
+        return ResultUtil.data(storeLogisticsService.getStoreSelectedLogistics(storeId));
+    }
+
+    @ApiOperation(value = "璁㈠崟鍖呰9鍙戣揣")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderSn", value = "璁㈠崟sn", required = true, dataType = "String", paramType = "path"),
+            @ApiImplicitParam(name = "logisticsNo", value = "鍙戣揣鍗曞彿", required = true, dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "logisticsId", value = "鐗╂祦鍏徃", required = true, dataType = "String", paramType = "query")
+    })
+    @PostMapping(value = "/{orderSn}/partDelivery")
+    public ResultMessage<Object> delivery(@RequestBody PartDeliveryParamsDTO partDeliveryParamsDTO) {
+        return ResultUtil.data(orderService.partDelivery(partDeliveryParamsDTO));
+    }
+
 }
diff --git a/consumer/src/main/resources/application.yml b/consumer/src/main/resources/application.yml
index 042711c..0c2b221 100644
--- a/consumer/src/main/resources/application.yml
+++ b/consumer/src/main/resources/application.yml
@@ -4,9 +4,6 @@
   servlet:
     context-path: /
 
-  # 姝e紡閮ㄧ讲鏃跺�欙紝瑙e紑姝ゅ閰嶇疆锛岄槻姝㈡枃浠跺す琚竻闄ゅ鑷寸殑鏂囦欢涓婁紶澶辫触闂
-  #    multipart:
-  #      location: /Users/lifenlong/Desktop/ceshi
   tomcat:
     uri-encoding: UTF-8
     threads:
@@ -25,8 +22,6 @@
       exposure:
         include: '*'
 spring:
-  application:
-    name: consumer
   # 瑕佸湪鍏朵腑娉ㄥ唽鐨凷pring Boot Admin Server鐨刄RL銆�
   boot:
     admin:
@@ -36,9 +31,10 @@
     type: redis
   # Redis
   redis:
-    host: 127.0.0.1
+    host: 42.193.1.25
     port: 6379
-#    password: lilishop
+    password: ycl2018
+    database: 12
     lettuce:
       pool:
         # 杩炴帴姹犳渶澶ц繛鎺ユ暟锛堜娇鐢ㄨ礋鍊艰〃绀烘病鏈夐檺鍒讹級 榛樿 8
@@ -67,11 +63,13 @@
       default-datasource:
         type: com.alibaba.druid.pool.DruidDataSource
         driverClassName: com.mysql.cj.jdbc.Driver
-        url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+        url: jdbc:mysql://42.193.1.25:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+        #        url: jdbc:mysql://127.0.0.1:3306/lilishop?useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
         username: root
-        password: 123456
-        maxActive: 20
-        initialSize: 5
+        password: 321$YcYl@1970!
+        #        password: 123456
+        maxActive: 50
+        initialSize: 20
         maxWait: 60000
         minIdle: 5
         timeBetweenEvictionRunsMillis: 60000
@@ -111,7 +109,7 @@
     props:
       #鏄惁鎵撳嵃閫昏緫SQL璇彞鍜屽疄闄匰QL璇彞锛屽缓璁皟璇曟椂鎵撳嵃锛屽湪鐢熶骇鐜鍏抽棴
       sql:
-        show: false
+        show: true
 
 # 蹇界暐閴存潈url
 ignored:
@@ -122,33 +120,42 @@
     - /MP_verify_qSyvBPhDsPdxvOhC.txt
     - /weixin/**
     - /source/**
-    - /buyer/mini-program/**
-    - /buyer/cashier/**
-    - /buyer/pageData/**
-    - /buyer/article/**
+    - /store/passport/login/**
+    - /store/passport/login/refresh/**
+    - /common/common/slider/**
+    - /common/common/sms/**
+    - /common/common/site
+    - /buyer/payment/cashier/**
+    - /buyer/other/pageData/**
+    - /buyer/other/article/**
     - /buyer/goods/**
-    - /buyer/category/**
-    - /buyer/shop/**
-    - /buyer/connect/**
-    - /buyer/members/smsLogin
-    - /buyer/members/refresh/*
-    - /buyer/members/refresh**
-    - /buyer/promotion/pintuan
-    - /buyer/promotion/seckill
-    - /buyer/memberEvaluation/**/goodsEvaluation
-    - /buyer/memberEvaluation/**/evaluationNumber
-    - /store/login/**
-    - /manager/user/login
-    - /manager/user/refresh/**
+    - /buyer/store/**
+    - /buyer/passport/connect/**
+    - /buyer/members/**
+    - /buyer/passport/member/**
+    - /buyer/passport/member/refresh/**
+    - /buyer/promotion/pintuan/**
+    - /buyer/promotion/seckill/**
+    - /buyer/promotion/pointsGoods/**
+    - /buyer/promotion/coupon
+    - /buyer/member/evaluation/**/goodsEvaluation
+    - /buyer/member/evaluation/**/evaluationNumber
+    - /buyer/other/appVersion/**
+    - /buyer/broadcast/studio/**
+    - /manager/passport/user/login
+    - /manager/passport/user/refresh/**
+    - /manager/other/elasticsearch
+    - /manager/other/customWords
     - /druid/**
     - /swagger-ui.html
     - /doc.html
     - /swagger-resources/**
     - /swagger/**
     - /webjars/**
-    - /v2/api-docs
+    - /v2/api-docs**
     - /configuration/ui
     - /boot-admin
+    - /manager/promotion/seckill/init
     - /**/*.js
     - /**/*.css
     - /**/*.png
@@ -156,9 +163,9 @@
 
 # Swagger鐣岄潰鍐呭閰嶇疆
 swagger:
-  title: lili API鎺ュ彛鏂囨。
-  description: lili Api Documentation
-  version: 1.0.0
+  title: lilishop API鎺ュ彛鏂囨。
+  description: lilishop Api Documentation
+  version: 4.2.2
   termsOfServiceUrl: https://pickmall.cn
   contact:
     name: lili
@@ -167,24 +174,31 @@
 
 # Mybatis-plus
 mybatis-plus:
-  mapper-locations: classpath*:mapper/*.xml
+  mapper-locations: classpath*:mapper/**/*.xml
   configuration:
     #缂撳瓨寮�鍚�
     cache-enabled: true
     #鏃ュ織
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+  global-config:
+    db-config:
+      #閫昏緫鍒犻櫎閰嶇疆瀛楁
+      logic-delete-field: deleteFlag
+      #閫昏緫鍒犻櫎閰嶇疆瀛楁 1 鍒犻櫎
+      logic-delete-value: 1
+      #閫昏緫鍒犻櫎閰嶇疆瀛楁 0 涓嶅垹闄�
+      logic-not-delete-value: 0
 
 # 鏃ュ織
 logging:
-  config: classpath:logback-spring.xml
   # 杈撳嚭绾у埆
   level:
-    root: info
+    cn.lili: info
   #    org.hibernate: debug
   #    org.springframework: debug
   file:
     # 鎸囧畾璺緞
-    path: lili-logs
+    path: logs
   logback:
     rollingpolicy:
       # 鏈�澶т繚瀛樺ぉ鏁�
@@ -196,9 +210,26 @@
   encryptor:
     password: lili
 
+
 lili:
+  #楠岃瘉鐮佽缃�
+  verification-code:
+    #鍥惧舰楠岃瘉鐮佹湁鏁堟椂闂� 绉� 鍖呭惈婊戝潡楠岃瘉鐮佹湁鏁堟椂闂达紝 浠ュ強楠岃瘉閫氳繃涔嬪悗锛岀紦瀛樹腑瀛樺偍鐨勯獙璇佺粨鏋滄湁鏁堟椂闂�
+    effectiveTime: 300
+    #姘村嵃
+    watermark: 缁挎弧绛�
+    #骞叉壈椤规暟閲� 鏈�澶�2 榛樿0
+    interfereNum: 1
+    #鍏佽璇樊鍍忕礌
+    faultTolerant: 3
   system:
-    isDemoSite: true
+    isDemoSite: false
+    #     鑴辨晱绾у埆锛�
+    #     0锛氫笉鍋氳劚鏁忓鐞�
+    #     1锛氱鐞嗙鐢ㄦ埛鎵嬫満鍙风瓑淇℃伅鑴辨晱
+    #     2锛氬晢瀹剁淇℃伅鑴辨晱锛堜负2鏃讹紝琛ㄧず绠$悊绔紝鍟嗗绔悓鏃惰劚鏁忥級
+    sensitiveLevel: 1
+
   statistics:
     # 鍦ㄧ嚎浜烘暟缁熻 X 灏忔椂銆傝繖閲岃缃�48锛屽嵆缁熻杩囧幓48灏忔椂姣忓皬鏃跺湪绾夸汉鏁�
     onlineMember: 48
@@ -210,21 +241,21 @@
     sk: zhNKVrJK6UPOhqIjn8AQvG37b9sz6
   #鍩熷悕
   domain:
-    pc: https://pc.b2b2c.pickmall.cn
-    wap: https://m.b2b2c.pickmall.cn
-    store: https://store.b2b2c.pickmall.cn
-    admin: https://admin.b2b2c.pickmall.cn
+    pc: http://127.0.0.1:8888
+    wap: http://127.0.0.1:8888
+    seller: http://127.0.0.1:8888
+    admin: http://127.0.0.1:8888
   #api鍦板潃
   api:
-    buyer: https://buyer-api.pickmall.cn
-    common: https://common-api.pickmall.cn
-    manager: https://admin-api.pickmall.cn
-    store: https://store-api.pickmall.cn
+    buyer: https://z171l91606.51mypc.cn
+    base: http://127.0.0.1:8888
+    manager: http://127.0.0.1:8888
+    seller: http://127.0.0.1:8888
 
   # jwt 缁嗚妭璁惧畾
   jwt-setting:
     # token杩囨湡鏃堕棿锛堝垎閽燂級
-    tokenExpireTime: 60
+    tokenExpireTime: 360
 
   # 浣跨敤Spring @Cacheable娉ㄨВ澶辨晥鏃堕棿
   cache:
@@ -247,9 +278,14 @@
     #      account:
     #        username: elastic
     #        password: LiLiShopES
-#    logstash:
-#      server: 127.0.0.1:4560
+
+    #    logstash:
+    #      server: 127.0.0.1:30560
     rocketmq:
+      comment-topic: lmk_comment_topic  # 璇勮
+      comment-group: lmk_comment_group
+      video-topic: lmk_video_topic  # 瑙嗛
+      video-group: lmk_video_group
       promotion-topic: lili_promotion_topic
       promotion-group: lili_promotion_group
       msg-ext-topic: lili_msg_topic
@@ -272,6 +308,7 @@
       after-sale-group: lili_after_sale_group
 rocketmq:
   name-server: 127.0.0.1:9876
+  isVIPChannel: false
   producer:
     group: lili_group
     send-message-timeout: 30000
@@ -287,3 +324,37 @@
       port: 8848
       logpath: ./xxl-job/executor
       logretentiondays: 7
+
+# 鑵捐cos-sts閰嶇疆
+cos:
+  secretId: AKID6zd07yZtwjFVVGkxvc2C5h26uTmpc9QQ  # 鑵捐ARM鐢ㄦ埛鐨剆ecretId
+  secretKey: lFTcV6RVIo43lCMFsEKAk36tRjlVzC8n  # 鑵捐ARM鐢ㄦ埛鐨剆ecretKey
+  durationSeconds: 1800  # STS涓存椂璁块棶鍑瘉鏈夋晥鏈燂紝鍗曚綅绉掞紝榛樿1800s锛屼富璐﹀彿鏈�闀�2灏忔椂锛屽瓙璐﹀彿(ARM鐢ㄦ埛)36灏忔椂
+  bucket: lmk-1356772813
+  region: ap-chengdu
+  endpoint: https://lmk-1356772813.cos.ap-chengdu.myqcloud.com  # 璁块棶鍩熷悕
+  urlExpireMinute: 360  # 棰勭鍚島rl鏈夋晥鏃堕棿(鍒嗛挓)
+  actions:  # sts鐨勬潈闄�
+    - cos:GetBucketACL
+    - cos:GetObject
+    - cos:GetObjectACL
+    - cos:GetObjectTagging
+    - cos:HeadObject
+    - cos:ListMultipartUploads
+    - cos:ListParts
+    - cos:AbortMultipartUpload
+    - cos:AppendObject
+    - cos:CompleteMultipartUpload
+    - cos:DeleteMultipleObjects
+    - cos:DeleteObject
+    - cos:InitiateMultipartUpload
+    - cos:PostObject
+    - cos:PutObject
+    - cos:PutObjectACL
+    - cos:PutObjectCopy
+    - cos:PutObjectTagging
+    - cos:RenameObject
+    - cos:UploadPart
+    - cos:UploadPartCopy
+  resources: # 鑳芥搷浣滃摢浜涜祫婧�
+    - qcs::cos::uid/1356772813:lmk-1356772813/*
diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java
new file mode 100644
index 0000000..0dca2e2
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dto/SupplierOrderSearchParams.java
@@ -0,0 +1,227 @@
+package cn.lili.modules.order.order.entity.dto;
+
+import cn.hutool.core.text.CharSequenceUtil;
+import cn.lili.common.security.AuthUser;
+import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.DateUtil;
+import cn.lili.common.vo.PageVO;
+import cn.lili.modules.order.order.entity.enums.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 璁㈠崟鏌ヨ鍙傛暟
+ *
+ * @author Chopper
+ * @since 2020/11/17 4:33 涓嬪崍
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SupplierOrderSearchParams extends PageVO {
+
+    private static final long serialVersionUID = -6380573339089959194L;
+
+    @ApiModelProperty(value = "鍟嗗搧鍚嶇О")
+    private String goodsName;
+
+    @ApiModelProperty(value = "璁㈠崟缂栧彿")
+    private String orderSn;
+
+    @ApiModelProperty(value = "椤甸潰鏍囩",
+            example = "ALL:鍏ㄩ儴," +
+                    "WAIT_PAY:寰呬粯娆�," +
+                    "WAIT_ROG:寰呮敹璐�," +
+                    "CANCELLED:宸插彇娑�," +
+                    "COMPLETE:宸插畬鎴�")
+    private String tag;
+
+    @ApiModelProperty(value = "鍟嗗ID")
+    private String storeId;
+
+    @ApiModelProperty(value = "浼氬憳ID")
+    private String memberId;
+
+    @ApiModelProperty(value = "鏀惰揣浜�")
+    private String shipName;
+
+    @ApiModelProperty(value = "涔板鏄电О")
+    private String buyerName;
+
+    @ApiModelProperty(value = "璁㈠崟鐘舵��")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "浠樻鐘舵��")
+    private String payStatus;
+
+    @ApiModelProperty(value = "鍏抽敭瀛� 鍟嗗搧鍚嶇О/涔板鍚嶇О/搴楅摵鍚嶇О")
+    private String keywords;
+
+    @ApiModelProperty(value = "浠樻鏂瑰紡")
+    private String paymentType;
+
+    /**
+     * @see OrderTypeEnum
+     * @see OrderPromotionTypeEnum
+     */
+    @ApiModelProperty(value = "璁㈠崟绫诲瀷", allowableValues = "NORMAL,VIRTUAL,GIFT,PINTUAN,POINT")
+    private String orderType;
+
+    @ApiModelProperty(value = "鏀粯鏂瑰紡")
+    private String paymentMethod;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏀粯鏃堕棿")
+    private Date paymentTime;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓嬪崟寮�濮嬫椂闂�")
+    private Date startDate;
+
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "涓嬪崟缁撴潫鏃堕棿")
+    private Date endDate;
+
+    @ApiModelProperty(value = "璁㈠崟鏉ユ簮")
+    private String clientType;
+
+    /**
+     * @see CommentStatusEnum
+     */
+    @ApiModelProperty(value = "璇勮鐘舵��:鏈瘎璁�(UNFINISHED),寰呰拷璇�(WAIT_CHASE),璇勮瀹屾垚(FINISHED)锛�")
+    private String commentStatus;
+
+    @ApiModelProperty(value = "鏄惁涓哄叾浠栬鍗曚笅鐨勮鍗曪紝濡傛灉鏄垯涓轰緷璧栬鍗曠殑sn锛屽惁鍒欎负绌�")
+    private String parentOrderSn;
+
+    @ApiModelProperty(value = "鏄惁涓烘煇璁㈠崟绫诲瀷鐨勮鍗曪紝濡傛灉鏄垯涓鸿鍗曠被鍨嬬殑id锛屽惁鍒欎负绌�")
+    private String promotionId;
+
+    @ApiModelProperty(value = "鎬讳环鏍�,鍙互涓鸿寖鍥达紝濡�10_1000")
+    private String flowPrice;
+
+    /**
+     * @see OrderPromotionTypeEnum
+     */
+    @ApiModelProperty(value = "璁㈠崟淇冮攢绫诲瀷")
+    private String orderPromotionType;
+
+    public <T> QueryWrapper<T> queryWrapper() {
+        AuthUser currentUser = UserContext.getCurrentUser();
+        QueryWrapper<T> wrapper = new QueryWrapper<>();
+
+        //鍏抽敭瀛楁煡璇�
+        if (CharSequenceUtil.isNotEmpty(keywords)) {
+            wrapper.and(keyWrapper -> keyWrapper.like("o.sn", keywords).or().like("oi.goods_name", keywords));
+        }
+//        if (currentUser != null) {
+//            //鎸夊崠瀹舵煡璇�
+//            wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.STORE.name()), "o.store_id", currentUser.getStoreId());
+//
+//            //搴楅摵鏌ヨ
+//            wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MANAGER.name())
+//                    && CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId);
+//
+//            //鎸変拱瀹舵煡璇�
+//            wrapper.eq(CharSequenceUtil.equals(currentUser.getRole().name(), UserEnums.MEMBER.name()) && memberId == null, "o.member_id", currentUser.getId());
+//
+//        }
+        wrapper.eq( CharSequenceUtil.isNotEmpty(storeId), "o.store_id", storeId);
+        //鎸夌収涔板鏌ヨ
+        wrapper.like(CharSequenceUtil.isNotEmpty(memberId), "o.member_id", memberId);
+
+        //鎸夎鍗曠紪鍙锋煡璇�
+        wrapper.like(CharSequenceUtil.isNotEmpty(orderSn), "o.sn", orderSn);
+
+        //鎸夋椂闂存煡璇�
+        wrapper.ge(startDate != null, "o.create_time", startDate);
+
+        wrapper.le(endDate != null, "o.create_time", DateUtil.endOfDate(endDate));
+        //鎸夎喘涔颁汉鐢ㄦ埛鍚�
+        wrapper.like(CharSequenceUtil.isNotEmpty(buyerName), "o.member_name", buyerName);
+
+        //鎸夎鍗曠被鍨�
+        wrapper.eq(CharSequenceUtil.isNotEmpty(orderType), "o.order_type", orderType);
+
+        //鐗╂祦鏌ヨ
+        wrapper.like(CharSequenceUtil.isNotEmpty(shipName), "o.consignee_name", shipName);
+
+        //鎸夊晢鍝佸悕绉版煡璇�
+        wrapper.like(CharSequenceUtil.isNotEmpty(goodsName), "oi.goods_name", goodsName);
+
+        //浠樻鏂瑰紡
+        wrapper.like(CharSequenceUtil.isNotEmpty(paymentType), "o.payment_type", paymentType);
+
+        //鎸夋敮浠樻柟寮�
+        wrapper.eq(CharSequenceUtil.isNotEmpty(paymentMethod), "o.payment_method", paymentMethod);
+
+        //璁㈠崟鐘舵��
+        wrapper.eq(CharSequenceUtil.isNotEmpty(orderStatus), "o.order_status", orderStatus);
+
+        //浠樻鐘舵��
+        wrapper.eq(CharSequenceUtil.isNotEmpty(payStatus), "o.pay_status", payStatus);
+
+        //璁㈠崟鏉ユ簮
+        wrapper.like(CharSequenceUtil.isNotEmpty(clientType), "o.client_type", clientType);
+
+        //鎸夎瘎浠风姸鎬�
+        wrapper.eq(CharSequenceUtil.isNotEmpty(commentStatus), "oi.comment_status", commentStatus);
+
+        //鎸夋爣绛炬煡璇�
+        if (CharSequenceUtil.isNotEmpty(tag)) {
+            String orderStatusColumn = "o.order_status";
+            OrderTagEnum tagEnum = OrderTagEnum.valueOf(tag);
+            switch (tagEnum) {
+                //寰呬粯娆�
+                case WAIT_PAY:
+                    wrapper.eq(orderStatusColumn, OrderStatusEnum.UNPAID.name());
+                    break;
+                //寰呭彂璐�
+                case WAIT_SHIP:
+                    wrapper.eq(orderStatusColumn, OrderStatusEnum.UNDELIVERED.name());
+                    break;
+                //寰呮敹璐�
+                case WAIT_ROG:
+                    wrapper.eq(orderStatusColumn, OrderStatusEnum.DELIVERED.name());
+                    break;
+                //宸插彇娑�
+                case CANCELLED:
+                    wrapper.eq(orderStatusColumn, OrderStatusEnum.CANCELLED.name());
+                    break;
+                //宸插畬鎴�
+                case COMPLETE:
+                    wrapper.eq(orderStatusColumn, OrderStatusEnum.COMPLETED.name());
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        // 渚濊禆璁㈠崟
+        wrapper.eq(parentOrderSn != null, "o.parent_order_sn", parentOrderSn);
+        // 淇冮攢娲诲姩id
+        wrapper.eq(CharSequenceUtil.isNotEmpty(promotionId), "o.promotion_id", promotionId);
+
+        wrapper.eq(CharSequenceUtil.isNotEmpty(orderPromotionType), "o.order_promotion_type", orderPromotionType);
+
+        if (CharSequenceUtil.isNotEmpty(flowPrice)) {
+            String[] s = flowPrice.split("_");
+            if (s.length > 1) {
+                wrapper.between("o.flow_price", s[0], s[1]);
+            } else {
+                wrapper.ge("o.flow_price", s[0]);
+            }
+        }
+        wrapper.eq("o.delete_flag", false);
+        return wrapper;
+    }
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java
index 698f654..45e5d9e 100644
--- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java
+++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java
@@ -120,6 +120,29 @@
             ",GROUP_CONCAT(oi.refund_price) as group_refund_price " +
             " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ")
     IPage<OrderSimpleXcxVO> queryByXcxParams(IPage<OrderSimpleVO> page, @Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper);
+    /**
+     * 鍟嗘埛绔煡璇�
+     *
+     * @param page         鍒嗛〉
+     * @param queryWrapper 鏌ヨ鏉′欢
+     * @return 绠�鐭鍗曞垎椤�
+     */
+    @Select("select o.sn,o.flow_price,o.create_time,o.order_status,o.pay_status,o.payment_method,o.payment_time,o.member_name,o.store_name as " +
+            "store_name,o.store_id as store_id,o.client_type,o.order_type,o.deliver_status,o.order_promotion_type,o.seller_remark " +
+            ",GROUP_CONCAT(oi.goods_id) as group_goods_id," +
+            " GROUP_CONCAT(oi.sku_id) as group_sku_id," +
+            " GROUP_CONCAT(oi.num) as group_num" +
+            ",GROUP_CONCAT(oi.image) as group_images" +
+            ",GROUP_CONCAT(oi.goods_name) as group_name " +
+            ",GROUP_CONCAT(oi.after_sale_status) as group_after_sale_status" +
+            ",GROUP_CONCAT(oi.complain_status) as group_complain_status" +
+            ",GROUP_CONCAT(oi.comment_status) as group_comment_status" +
+            ",GROUP_CONCAT(oi.sn) as group_order_items_sn " +
+            ",GROUP_CONCAT(oi.goods_price) as group_goods_price " +
+            ",GROUP_CONCAT(oi.is_refund) as group_is_refund " +
+            ",GROUP_CONCAT(oi.refund_price) as group_refund_price " +
+            " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ")
+    IPage<OrderSimpleXcxVO> querySupplierOrderParams(IPage<OrderSimpleVO> page, @Param(Constants.WRAPPER) Wrapper<OrderSimpleVO> queryWrapper);
 
     /**
      * 鏌ヨ璁㈠崟淇℃伅
diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java
index 93d229d..8978fad 100644
--- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java
+++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java
@@ -6,6 +6,7 @@
 import cn.lili.modules.order.order.entity.dto.OrderMessage;
 import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
 import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO;
+import cn.lili.modules.order.order.entity.dto.SupplierOrderSearchParams;
 import cn.lili.modules.order.order.entity.vo.OrderDetailVO;
 import cn.lili.modules.order.order.entity.vo.OrderSimpleVO;
 import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO;
@@ -61,6 +62,8 @@
      */
     IPage<OrderSimpleXcxVO> queryByXcxParams(OrderSearchParams orderSearchParams);
 
+    IPage<OrderSimpleXcxVO> querySupplierOrderParams(SupplierOrderSearchParams orderSearchParams);
+
     /**
      * 璁㈠崟淇℃伅
      *
diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
index afcc338..74ee3e3 100644
--- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java
@@ -272,6 +272,42 @@
         return iPage;
     }
 
+    @Override
+    public IPage<OrderSimpleXcxVO> querySupplierOrderParams(SupplierOrderSearchParams orderSearchParams) {
+        QueryWrapper queryWrapper = orderSearchParams.queryWrapper();
+        queryWrapper.groupBy("o.id");
+        queryWrapper.orderByDesc("o.id");
+        IPage<OrderSimpleXcxVO>  iPage = this.baseMapper.querySupplierOrderParams(PageUtil.initPage(orderSearchParams), queryWrapper);
+        Set<String> goodsIds = new HashSet<>();
+        for (OrderSimpleXcxVO orderSimpleVO : iPage.getRecords()) {
+            orderSimpleVO.setOrderItems(orderSimpleVO.initOrderItems());
+            String groupGoodsId = orderSimpleVO.getGroupGoodsId();
+            if (StringUtils.isNotBlank(groupGoodsId)) {
+                goodsIds.addAll(Arrays.asList(groupGoodsId.split(",")));
+            }
+        }
+        if (CollectionUtil.isNotEmpty(goodsIds)) {
+            List<Goods> list = goodsService.list(Wrappers.<Goods>lambdaQuery().in(Goods::getId, goodsIds));
+            Map<String, String> goodsVideos = list
+                    .stream().collect(Collectors.toMap(Goods::getId, g->
+                            StringUtils.isNotBlank(g.getGoodsVideo())?g.getGoodsVideo():""
+                    ));
+            iPage.getRecords().forEach(orderSimpleVO -> {
+                orderSimpleVO.getOrderItems().forEach(orderItem -> {
+                    String videoUrl = goodsVideos.get(orderItem.getGoodsId());
+                    if (StringUtils.isNotBlank(videoUrl)&&!videoUrl.contains("http")) {
+                        orderItem.setVideo(cosUtil.getPreviewUrl(videoUrl));
+                    }
+                    String image = orderItem.getImage();
+                    if (StringUtils.isNotBlank(image)&&!image.contains("http")) {
+                        orderItem.setImage(cosUtil.getPreviewUrl(image));
+                    }
+                });
+            });
+        }
+        return iPage;
+    }
+
     /**
      * 璁㈠崟淇℃伅
      *
diff --git a/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java b/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java
index b6ef48d..60662aa 100644
--- a/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java
+++ b/lmk-job/src/main/java/cn/lili/handler/impl/coupon/CouponExecute.java
@@ -1,5 +1,6 @@
 package cn.lili.handler.impl.coupon;
 
+import cn.lili.handler.EveryDayExecute;
 import cn.lili.modules.promotion.entity.dos.MemberCoupon;
 import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
 import cn.lili.modules.promotion.service.MemberCouponService;

--
Gitblit v1.8.0