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