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 = "商品分页-发布视频时关联商品") 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删除") 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; 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); } 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()); 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()); } } 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; framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderSimpleXcxVO.java
New file @@ -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; } } 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); /** * 查询订单信息 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); /** * 订单信息 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; } /** * 订单信息 * 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)) { 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()); 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 = "修改收货人信息")