From 4318746ee88ad53e00341df1a0395058bebc40fa Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 25 六月 2025 14:33:46 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java | 23 ++ buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java | 21 ++ buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java | 23 ++ framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java | 5 framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java | 9 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java | 53 +++++ framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java | 4 framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java | 24 ++ seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java | 14 + framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java | 2 framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java | 3 framework/src/main/java/cn/lili/modules/order/order/entity/vo/AllowOperation.java | 37 ++++ buyer-api/src/main/java/cn/lili/controller/order/CartController.java | 36 +++ framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleXcxVO.java | 232 +++++++++++++++++++++++++ 14 files changed, 472 insertions(+), 14 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java index c5d3d25..3d94bc5 100644 --- a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java @@ -4,6 +4,7 @@ import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.goods.entity.dos.Goods; @@ -20,6 +21,7 @@ import cn.lili.modules.search.service.HotWordsService; import cn.lili.modules.statistics.aop.PageViewPoint; import cn.lili.modules.statistics.aop.enums.PageViewEnum; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; @@ -68,6 +70,9 @@ @Autowired private HotWordsService hotWordsService; + @Autowired + private COSUtil cosUtil; + @ApiOperation(value = "閫氳繃id鑾峰彇鍟嗗搧淇℃伅") @ApiImplicitParam(name = "goodsId", value = "鍟嗗搧ID", required = true, paramType = "path", dataType = "Long") @GetMapping(value = "/get/{goodsId}") @@ -114,7 +119,23 @@ @GetMapping("/es") public ResultMessage<Page<EsGoodsIndex>> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) { pageVO.setNotConvert(true); - return ResultUtil.data(goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO)); + Page<EsGoodsIndex> ePage = goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO); + ePage.getRecords().forEach(item -> { + String small = item.getSmall(); + String thumbnail = item.getThumbnail(); + String goodsVideo = item.getGoodsVideo(); + if (StringUtils.isNotBlank(small) && !small.contains("http")) { + item.setSmall(cosUtil.getPreviewUrl(small)); + } + if (StringUtils.isNotBlank(thumbnail) && !thumbnail.contains("http")) { + item.setThumbnail(cosUtil.getPreviewUrl(thumbnail)); + } + if (StringUtils.isNotBlank(goodsVideo) && !goodsVideo.contains("http")) { + item.setGoodsVideo(cosUtil.getPreviewUrl(goodsVideo)); + } + + }); + return ResultUtil.data(ePage); } @ApiOperation(value = "鍟嗗搧鍒嗛〉-鍙戝竷瑙嗛鏃跺叧鑱斿晢鍝�") diff --git a/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java b/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java index 480b882..43318e5 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/FootprintController.java @@ -2,11 +2,13 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.context.UserContext; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.FootPrintQueryParams; import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -36,11 +38,30 @@ @Autowired private FootprintService footprintService; + @Autowired + private COSUtil cosUtil; @ApiOperation(value = "鍒嗛〉鑾峰彇") @GetMapping public ResultMessage<IPage<EsGoodsIndex>> getByPage(FootPrintQueryParams params) { params.setMemberId(UserContext.getCurrentUser().getId()); - return ResultUtil.data(footprintService.footPrintPage(params)); + IPage<EsGoodsIndex> indexIPage = footprintService.footPrintPage(params); + indexIPage.getRecords().forEach(item -> { + + String small = item.getSmall(); + String thumbnail = item.getThumbnail(); + String goodsVideo = item.getGoodsVideo(); + if (StringUtils.isNotBlank(small) && !small.contains("http")) { + item.setSmall(cosUtil.getPreviewUrl(small)); + } + if (StringUtils.isNotBlank(thumbnail) && !thumbnail.contains("http")) { + item.setThumbnail(cosUtil.getPreviewUrl(thumbnail)); + } + if (StringUtils.isNotBlank(goodsVideo) && !goodsVideo.contains("http")) { + item.setGoodsVideo(cosUtil.getPreviewUrl(goodsVideo)); + } + + }); + return ResultUtil.data(indexIPage); } @ApiOperation(value = "鏍规嵁id鍒犻櫎") diff --git a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java index 6eb90b1..2973172 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/CartController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/CartController.java @@ -1,9 +1,11 @@ package cn.lili.controller.order; +import cn.hutool.json.JSONUtil; import cn.lili.common.aop.annotation.PreventDuplicateSubmissions; import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.exception.ServiceException; +import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.order.cart.entity.dto.BuyBackDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; @@ -11,6 +13,7 @@ import cn.lili.modules.order.cart.entity.vo.TradeParams; import cn.lili.modules.order.cart.service.CartService; import cn.lili.modules.order.order.entity.vo.ReceiptVO; +import cn.lili.utils.COSUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -45,6 +48,8 @@ */ @Autowired private CartService cartService; + @Autowired + private COSUtil cosUtil; @ApiOperation(value = "鍚戣喘鐗╄溅涓坊鍔犱竴涓骇鍝�") @@ -74,7 +79,19 @@ @ApiOperation(value = "鑾峰彇璐墿杞﹂〉闈㈣喘鐗╄溅璇︽儏") @GetMapping("/all") public ResultMessage<TradeDTO> cartAll() { - return ResultUtil.data(this.cartService.getAllTradeDTO()); + TradeDTO allTradeDTO = this.cartService.getAllTradeDTO(); + allTradeDTO.getSkuList().forEach(item->{ + String goodsVideo = item.getGoodsSku().getGoodsVideo(); + if (StringUtils.isNotBlank(goodsVideo)&&!goodsVideo.contains("http")) { + item.getGoodsSku().setGoodsVideo(cosUtil.getPreviewUrl(goodsVideo)); + } + + String thumbnail = item.getGoodsSku().getThumbnail(); + if (StringUtils.isNotBlank(thumbnail)&&!thumbnail.contains("http")) { + item.getGoodsSku().setThumbnail(cosUtil.getPreviewUrl(thumbnail)); + } + }); + return ResultUtil.data(allTradeDTO); } @ApiOperation(value = "鑾峰彇璐墿杞︽暟閲�") @@ -174,7 +191,22 @@ public ResultMessage<TradeDTO> cartChecked(@NotNull(message = "璇诲彇閫変腑鍒楄〃") String way) { try { //璇诲彇閫変腑鐨勫垪琛� - return ResultUtil.data(this.cartService.getCheckedTradeDTO(CartTypeEnum.valueOf(way))); + TradeDTO checkedTradeDTO = this.cartService.getCheckedTradeDTO(CartTypeEnum.valueOf(way)); + checkedTradeDTO.getSkuList().forEach(item->{ + + + String goodsVideo = item.getGoodsSku().getGoodsVideo(); + if (StringUtils.isNotBlank(goodsVideo)&&!goodsVideo.contains("http")) { + item.getGoodsSku().setGoodsVideo(cosUtil.getPreviewUrl(goodsVideo)); + } + + String thumbnail = item.getGoodsSku().getThumbnail(); + if (StringUtils.isNotBlank(thumbnail)&&!thumbnail.contains("http")) { + item.getGoodsSku().setThumbnail(cosUtil.getPreviewUrl(thumbnail)); + } + }); + System.err.println(JSONUtil.toJsonStr(checkedTradeDTO)); + return ResultUtil.data(checkedTradeDTO); } catch (ServiceException se) { log.error(se.getMsg(), se); throw se; diff --git a/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java index c192d36..086685d 100644 --- a/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/order/OrderBuyerController.java @@ -7,6 +7,7 @@ import cn.lili.common.security.AuthUser; 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; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dos.OrderPackage; @@ -14,9 +15,12 @@ import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; 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; +import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderPackageService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.system.entity.vo.Traces; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -50,12 +54,23 @@ @Autowired private OrderPackageService orderPackageService; + @Autowired + private COSUtil cosUtil; + @ApiOperation(value = "鏌ヨ浼氬憳璁㈠崟鍒楄〃") @GetMapping public ResultMessage<IPage<OrderSimpleVO>> queryMineOrder(OrderSearchParams orderSearchParams) { AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); orderSearchParams.setMemberId(currentUser.getId()); return ResultUtil.data(orderService.queryByParams(orderSearchParams)); + } + + @ApiOperation(value = "鏌ヨ浼氬憳璁㈠崟鍒楄〃") + @GetMapping("/xcx") + public ResultMessage<IPage<OrderSimpleXcxVO>> queryXcxMineOrder(OrderSearchParams orderSearchParams) { + AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); + orderSearchParams.setMemberId(currentUser.getId()); + return ResultUtil.data(orderService.queryByXcxParams(orderSearchParams)); } @ApiOperation(value = "璁㈠崟鏄庣粏") @@ -66,6 +81,12 @@ public ResultMessage<OrderDetailVO> detail(@NotNull(message = "璁㈠崟缂栧彿涓嶈兘涓虹┖") @PathVariable("orderSn") String orderSn) { OrderDetailVO orderDetailVO = orderService.queryDetail(orderSn); OperationalJudgment.judgment(orderDetailVO.getOrder()); + orderDetailVO.getOrderItems().forEach(orderItem -> { + String image = orderItem.getImage(); + if (StringUtils.isNotBlank(image)&&!image.contains("http")) { + orderItem.setImage(cosUtil.getPreviewUrl(image)); + } + }); return ResultUtil.data(orderDetailVO); } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java index f74fd3f..723725f 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/FootprintServiceImpl.java @@ -74,7 +74,7 @@ return null; } Optional<FootPrint> first = - footPrintPages.getRecords().stream().filter(j -> j.getSkuId().equals(goodsSkuByIdFromCache.get(i).getId())).findFirst(); + footPrintPages.getRecords().stream().filter(j -> goodsSkuByIdFromCache.get(i).getId().equals(j.getSkuId())).findFirst(); return first.map(footPrint -> new EsGoodsIndex(goodsSkuByIdFromCache.get(i), footPrint.getCreateTime())).orElseGet(() -> new EsGoodsIndex(goodsSkuByIdFromCache.get(i))); }) .collect(Collectors.toList()); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AllowOperation.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AllowOperation.java index 7458bd2..d839f42 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AllowOperation.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AllowOperation.java @@ -128,5 +128,42 @@ this.take = order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()); } + /** + * 鏍规嵁鍚勭鐘舵�佹瀯寤哄璞� + * + * @param order + */ + public AllowOperation(OrderSimpleXcxVO order) { + + //鑾峰彇璁㈠崟绫诲瀷 + String status = order.getOrderStatus(); + String payStatus = order.getPayStatus(); + //缂栬緫璁㈠崟浠锋牸 鏈粯娆惧苟涓旀槸鏂拌鍗� + if (payStatus.equals(PayStatusEnum.UNPAID.name()) && status.equals(OrderStatusEnum.UNPAID.name())) { + this.editPrice = true; + } + + //鍙栨秷鍒ゅ畾 + if (CharSequenceUtil.equalsAny(status, OrderStatusEnum.UNPAID.name(), OrderStatusEnum.PAID.name(), OrderStatusEnum.UNDELIVERED.name())) { + this.cancel = true; + } + //鏂拌鍗曪紝鍏佽鏀粯 + this.pay = status.equals(OrderStatusEnum.UNPAID.name()); + + //璁㈠崟鏈彂璐э紝灏卞彲浠ョ紪杈戞敹璐т汉淇℃伅 + this.editConsignee = order.getDeliverStatus().equals(DeliverStatusEnum.UNDELIVERED.name()); + + //鏄惁鍏佽琚彂璐� + this.ship = editConsignee && status.equals(OrderStatusEnum.UNDELIVERED.name()); + + //鏄惁鍏佽琚敹璐� + this.rog = status.equals(OrderStatusEnum.DELIVERED.name()); + + //鏄惁鍏佽鏌ョ湅鐗╂祦淇℃伅 + this.showLogistics = order.getDeliverStatus().equals(DeliverStatusEnum.DELIVERED.name()) && status.equals(OrderStatusEnum.DELIVERED.name()); + + this.take = order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name()) && order.getOrderStatus().equals(OrderStatusEnum.TAKE.name()); + } + } diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java index 66134c9..1ae4ce5 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderItemVO.java @@ -32,6 +32,9 @@ @ApiModelProperty(value = "鍥剧墖") private String image; + @ApiModelProperty(value = "鍥剧墖") + private String video; + @ApiModelProperty(value = "鍟嗗搧鍚嶇О") private String name; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleXcxVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleXcxVO.java new file mode 100644 index 0000000..811f3d4 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleXcxVO.java @@ -0,0 +1,232 @@ +package cn.lili.modules.order.order.entity.vo; + +import cn.hutool.core.text.CharSequenceUtil; +import cn.lili.common.enums.ClientTypeEnum; +import cn.lili.common.security.sensitive.Sensitive; +import cn.lili.common.security.sensitive.enums.SensitiveStrategy; +import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; +import cn.lili.modules.order.order.entity.enums.OrderPromotionTypeEnum; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 璁㈠崟绠�鐣ヤ俊鎭� + * 鐢ㄤ簬璁㈠崟鍒楄〃鏌ョ湅 + * + * @author Chopper + * @since 2020-08-17 20:28 + */ +@Data +public class OrderSimpleXcxVO { + + @ApiModelProperty("sn") + private String sn; + + @ApiModelProperty(value = "鎬讳环鏍�") + private Double flowPrice; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + + /** + * @see cn.lili.modules.order.order.entity.enums.OrderStatusEnum + */ + @ApiModelProperty(value = "璁㈠崟鐘舵��") + private String orderStatus; + + /** + * @see cn.lili.modules.order.order.entity.enums.PayStatusEnum + */ + @ApiModelProperty(value = "浠樻鐘舵��") + private String payStatus; + + @ApiModelProperty(value = "鏀粯鏂瑰紡") + private String paymentMethod; + + @ApiModelProperty(value = "鏀粯鏃堕棿") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date paymentTime; + + @ApiModelProperty(value = "鐢ㄦ埛鍚�") + @Sensitive(strategy = SensitiveStrategy.PHONE) + private String memberName; + + @ApiModelProperty(value = "搴楅摵鍚嶇О") + private String storeName; + + @ApiModelProperty(value = "搴楅摵ID") + private String storeId; + + /** + * @see ClientTypeEnum + */ + @ApiModelProperty(value = "璁㈠崟鏉ユ簮") + private String clientType; + + /** + * 瀛愯鍗曚俊鎭� + */ + @Getter + private List<OrderItemVO> orderItems; + + @ApiModelProperty(hidden = true, value = "item goods_id") + @Setter + private String groupGoodsId; + + @ApiModelProperty(hidden = true, value = "item sku id") + @Setter + private String groupSkuId; + + @ApiModelProperty(hidden = true, value = "item 鏁伴噺") + @Setter + private String groupNum; + + @ApiModelProperty(hidden = true, value = "item 鍥剧墖") + @Setter + private String groupImages; + + @ApiModelProperty(hidden = true, value = "item 鍚嶅瓧") + @Setter + private String groupName; + + @ApiModelProperty(hidden = true, value = "item 缂栧彿") + @Setter + private String groupOrderItemsSn; + + @ApiModelProperty(hidden = true, value = "item 鍟嗗搧浠锋牸") + @Setter + private String groupGoodsPrice; + /** + * @see OrderItemAfterSaleStatusEnum + */ + @ApiModelProperty(hidden = true, value = "item 鍞悗鐘舵��", allowableValues = "NOT_APPLIED(鏈敵璇�),ALREADY_APPLIED(宸茬敵璇�),EXPIRED(宸插け鏁堜笉鍏佽鐢宠鍞悗)") + @Setter + private String groupAfterSaleStatus; + + /** + * @see cn.lili.modules.order.order.entity.enums.OrderComplaintStatusEnum + */ + @ApiModelProperty(hidden = true, value = "item 鎶曡瘔鐘舵��") + @Setter + private String groupComplainStatus; + + /** + * @see cn.lili.modules.order.order.entity.enums.CommentStatusEnum + */ + @ApiModelProperty(hidden = true, value = "item 璇勪环鐘舵��") + @Setter + private String groupCommentStatus; + + + /** + * @see cn.lili.modules.order.order.entity.enums.OrderTypeEnum + */ + @ApiModelProperty(value = "璁㈠崟绫诲瀷") + private String orderType; + + /** + * @see cn.lili.modules.order.order.entity.enums.DeliverStatusEnum + */ + @ApiModelProperty(value = "璐ц繍鐘舵��") + private String deliverStatus; + + /** + * @see OrderPromotionTypeEnum + */ + @ApiModelProperty(value = "璁㈠崟淇冮攢绫诲瀷") + private String orderPromotionType; + + @ApiModelProperty(value = "鏄惁閫�娆�") + private String groupIsRefund; + + @ApiModelProperty(value = "閫�娆鹃噾棰�") + private String groupRefundPrice; + + @ApiModelProperty(value = "鍗栧璁㈠崟澶囨敞") + private String sellerRemark; + private int i = 0; + public List<OrderItemVO> initOrderItems() { + if (CharSequenceUtil.isEmpty(groupGoodsId)) { + return new ArrayList<>(); + } + List<OrderItemVO> orderItemVOS = new ArrayList<>(); + + + String[] goodsId = groupGoodsId.split(","); + + for (int i = 0; i < goodsId.length; i++) { + orderItemVOS.add(this.getOrderItemVO(i)); + } + return orderItemVOS; + + } + + private OrderItemVO getOrderItemVO(int i) { + OrderItemVO orderItemVO = new OrderItemVO(); + orderItemVO.setGoodsId(groupGoodsId.split(",")[i]); + if (CharSequenceUtil.isNotEmpty(groupOrderItemsSn)) { + orderItemVO.setSn(groupOrderItemsSn.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupSkuId)) { + orderItemVO.setSkuId(groupSkuId.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupName)) { + orderItemVO.setName(groupName.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupNum) && groupNum.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setNum(groupNum.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupImages) && groupImages.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setImage(groupImages.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupAfterSaleStatus) && groupAfterSaleStatus.split(",").length == groupGoodsId.split(",").length) { + if (!OrderPromotionTypeEnum.isCanAfterSale(this.orderPromotionType)) { + orderItemVO.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.EXPIRED.name()); + } else { + orderItemVO.setAfterSaleStatus(groupAfterSaleStatus.split(",")[i]); + } + } + if (CharSequenceUtil.isNotEmpty(groupComplainStatus) && groupComplainStatus.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setComplainStatus(groupComplainStatus.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupCommentStatus) && groupCommentStatus.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setCommentStatus(groupCommentStatus.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupGoodsPrice) && groupGoodsPrice.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setGoodsPrice(Double.parseDouble(groupGoodsPrice.split(",")[i])); + } + if (CharSequenceUtil.isNotEmpty(groupIsRefund) && groupIsRefund.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setIsRefund(groupIsRefund.split(",")[i]); + } + if (CharSequenceUtil.isNotEmpty(groupRefundPrice) && groupRefundPrice.split(",").length == groupGoodsId.split(",").length) { + orderItemVO.setRefundPrice(groupRefundPrice.split(",")[i]); + } + return orderItemVO; + } + + /** + * 鍒濆鍖栬嚜韬姸鎬� + */ + public AllowOperation getAllowOperationVO() { + //璁剧疆璁㈠崟鐨勫彲鎿嶄綔鐘舵�� + return new AllowOperation(this); + } + + public String getGroupAfterSaleStatus() { + // 涓嶅彲鍞悗鐨勮鍗曠被鍨嬮泦鍚� + if (!OrderPromotionTypeEnum.isCanAfterSale(this.orderPromotionType)) { + return OrderItemAfterSaleStatusEnum.EXPIRED.name(); + } + return groupAfterSaleStatus; + } +} 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 1b19087..698f654 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 @@ -3,6 +3,7 @@ import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; +import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -96,6 +97,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<OrderSimpleVO> queryByParams(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> queryByXcxParams(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 00be1e0..93d229d 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 @@ -3,12 +3,12 @@ import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dto.OrderExportDTO; 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.vo.OrderDetailVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; +import cn.lili.modules.order.order.entity.vo.OrderSimpleXcxVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.system.entity.vo.Traces; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -53,6 +53,13 @@ * @return 绠�鐭鍗曞垎椤� */ IPage<OrderSimpleVO> queryByParams(OrderSearchParams orderSearchParams); + /** + * 璁㈠崟鏌ヨ + * + * @param orderSearchParams 鏌ヨ鍙傛暟 + * @return 绠�鐭鍗曞垎椤� + */ + IPage<OrderSimpleXcxVO> queryByXcxParams(OrderSearchParams 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 296c304..dc4a066 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 @@ -1,9 +1,11 @@ package cn.lili.modules.order.order.serviceimpl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelReader; @@ -20,7 +22,10 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; +import cn.lili.common.utils.StringUtils; +import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; +import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; @@ -28,10 +33,7 @@ import cn.lili.modules.order.order.entity.dos.*; import cn.lili.modules.order.order.entity.dto.*; import cn.lili.modules.order.order.entity.enums.*; -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.OrderVO; -import cn.lili.modules.order.order.entity.vo.PaymentLog; +import cn.lili.modules.order.order.entity.vo.*; import cn.lili.modules.order.order.mapper.OrderMapper; import cn.lili.modules.order.order.service.*; import cn.lili.modules.order.trade.entity.dos.OrderLog; @@ -59,12 +61,14 @@ import cn.lili.trigger.model.TimeExecuteConstant; import cn.lili.trigger.model.TimeTriggerMsg; import cn.lili.trigger.util.DelayQueueTools; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.usermodel.Cell; @@ -168,7 +172,10 @@ @Autowired private SettingService settingService; - + @Autowired + private GoodsService goodsService; + @Autowired + private COSUtil cosUtil; @Override @Transactional(rollbackFor = Exception.class) public void intoDB(TradeDTO tradeDTO) { @@ -224,6 +231,42 @@ return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper); } + @Override + public IPage<OrderSimpleXcxVO> queryByXcxParams(OrderSearchParams orderSearchParams) { + QueryWrapper queryWrapper = orderSearchParams.queryWrapper(); + queryWrapper.groupBy("o.id"); + queryWrapper.orderByDesc("o.id"); + IPage<OrderSimpleXcxVO> iPage = this.baseMapper.queryByXcxParams(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/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java b/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java index 1eeb771..ba73b62 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dto/EsGoodsSearchDTO.java @@ -76,6 +76,11 @@ @ApiModelProperty("闄や簡閿�鍞ā寮忓綋鍓嶉攢鍞ā寮忎箣澶�") private String neSalesModel; + @ApiModelProperty("鏄惁寮�鍚晢鍝佽繃婊�") + private Boolean canFilter; + + + //杩囨护鎼滅储鍏抽敭瀛� public String getKeyword() { if (CharSequenceUtil.isNotEmpty(keyword)) { diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 11aa047..0cadc1c 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -93,7 +93,9 @@ cache.incrementScore(CachePrefix.HOT_WORD.getPrefix(), searchDTO.getKeyword()); } NativeSearchQueryBuilder searchQueryBuilder = createSearchQueryBuilder(searchDTO, pageVo); -// searchQueryBuilder.withCollapseField("goodsId.keyword"); + if (Objects.nonNull(searchDTO.getCanFilter())&&searchDTO.getCanFilter()){ + searchQueryBuilder.withCollapseField("goodsId.keyword"); + } NativeSearchQuery searchQuery = searchQueryBuilder.build(); searchQuery.setTrackTotalHits(true); log.debug("searchGoods DSL:{}", searchQuery.getQuery()); diff --git a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java index 784c832..3204355 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java @@ -8,6 +8,7 @@ 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; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.service.StoreLogisticsService; @@ -20,6 +21,7 @@ import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.system.service.LogisticsService; +import cn.lili.utils.COSUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -75,7 +77,8 @@ @Autowired private OrderPackageService orderPackageService; - + @Autowired + private COSUtil cosUtil; @ApiOperation(value = "鏌ヨ璁㈠崟鍒楄〃") @GetMapping public ResultMessage<IPage<OrderSimpleVO>> queryMineOrder(OrderSearchParams orderSearchParams) { @@ -90,7 +93,14 @@ @GetMapping(value = "/{orderSn}") public ResultMessage<OrderDetailVO> detail(@NotNull @PathVariable String orderSn) { OperationalJudgment.judgment(orderService.getBySn(orderSn)); - return ResultUtil.data(orderService.queryDetail(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 = "淇敼鏀惰揣浜轰俊鎭�") -- Gitblit v1.8.0