pull/1121/head
梁宇奇 2025-07-17 00:31:13 +08:00
parent 7bb2132f8c
commit afd0366628
8 changed files with 74 additions and 41 deletions

View File

@ -155,7 +155,7 @@ public class AlipayCallbackController extends XktBaseController {
}
}
logger.warn("支付宝回调订单匹配失败:{}", params);
return FAILURE;
return SUCCESS;
}
logger.warn("支付宝验签未通过:{}", params);
return FAILURE;

View File

@ -1,6 +1,7 @@
package com.ruoyi.web.controller.xkt;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.ListUtil;
import com.alibaba.fastjson2.JSON;
import com.github.pagehelper.Page;
import com.ruoyi.common.annotation.Log;
@ -139,6 +140,20 @@ public class StoreOrderController extends XktBaseController {
return success();
}
@ApiOperation(value = "订单物流信息")
@GetMapping(value = "/{id}/track")
public R<List<StoreOrderInfoVO.Track>> getOrderTracks(@PathVariable("id") Long id) {
StoreOrder order = storeOrderService.getById(id);
if (SecurityUtils.isAdmin()
|| Objects.equals(order.getOrderUserId(), SecurityUtils.getUserId())
|| Objects.equals(order.getStoreId(), SecurityUtils.getStoreId())) {
return success(BeanUtil.copyToList(storeOrderService.getOrderExpressTracks(id),
StoreOrderInfoVO.Track.class));
}
//没有订单权限
return success(ListUtil.empty());
}
@PreAuthorize("@ss.hasAnyRoles('store,seller')||@ss.hasSupplierSubRole()")
@ApiOperation(value = "订单分页查询")

View File

@ -245,9 +245,6 @@ public class StoreOrderInfoVO {
@ApiModelProperty(value = "订单明细")
private List<Detail> orderDetails;
@ApiModelProperty(value = "轨迹信息")
private List<Track> expressTracks;
@ApiModelProperty(value = "下单用户昵称")
private String orderUserNickName;
@ -392,8 +389,8 @@ public class StoreOrderInfoVO {
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "档口商品名称")
private String prodName;
// @ApiModelProperty(value = "档口商品名称")
// private String prodName;
@ApiModelProperty(value = "商品货号")
private String prodArtNum;

View File

@ -390,8 +390,8 @@ public class StoreOrderPageItemVO extends StoreOrderDTO {
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "档口商品名称")
private String prodName;
// @ApiModelProperty(value = "档口商品名称")
// private String prodName;
@ApiModelProperty(value = "商品货号")
private String prodArtNum;

View File

@ -29,10 +29,6 @@ public class StoreOrderDetailDTO {
* ID
*/
private Long storeProdId;
/**
*
*/
private String prodName;
/**
*
*/

View File

@ -43,5 +43,4 @@ public class StoreOrderInfoDTO extends StoreOrderDTO {
private List<StoreOrderDetailInfoDTO> orderDetails;
private List<ExpressTrackDTO> expressTracks;
}

View File

@ -3,6 +3,7 @@ package com.ruoyi.xkt.service;
import com.github.pagehelper.Page;
import com.ruoyi.xkt.domain.StoreOrder;
import com.ruoyi.xkt.dto.express.ExpressPrintDTO;
import com.ruoyi.xkt.dto.express.ExpressTrackDTO;
import com.ruoyi.xkt.dto.order.*;
import com.ruoyi.xkt.enums.EPayChannel;
import com.ruoyi.xkt.enums.EPayPage;
@ -61,6 +62,14 @@ public interface IStoreOrderService {
*/
StoreOrderInfoDTO getInfo(Long storeOrderId);
/**
*
*
* @param storeOrderId
* @return
*/
List<ExpressTrackDTO> getOrderExpressTracks(Long storeOrderId);
/**
*
*

View File

@ -383,34 +383,6 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
//物流信息
Map<Long, String> expressNameMap = expressService.getAllExpressNameMap();
orderInfo.setExpressName(expressNameMap.get(order.getExpressId()));
Map<String, List<StoreOrderDetailInfoDTO>> expressWaybillGroupMap = detailInfos.stream()
.filter(o -> StrUtil.isNotEmpty(o.getExpressWaybillNo()))
.collect(Collectors.groupingBy(StoreOrderDetailInfoDTO::getExpressWaybillNo));
Map<String, List<ExpressTrackRecordDTO>> trackRecordGroupMap = expressService.listTrackRecord(
expressWaybillGroupMap.keySet())
.stream()
.collect(Collectors.groupingBy(ExpressTrackRecordDTO::getExpressWaybillNo));
List<ExpressTrackDTO> expressTracks = new ArrayList<>(expressWaybillGroupMap.size());
for (Map.Entry<String, List<StoreOrderDetailInfoDTO>> entry : expressWaybillGroupMap.entrySet()) {
ExpressTrackDTO expressTrackDTO = new ExpressTrackDTO();
List<String> goodsSummaries = entry.getValue().stream()
.map(o -> StrUtil.concat(true, o.getProdArtNum(), ", ", o.getColorName(), ", ",
String.valueOf(o.getSize()))).collect(Collectors.toList());
//发货时间
Long detailId = CollUtil.getFirst(entry.getValue()).getId();
StoreOrderOperationRecordDTO shipRecord = operationRecordService.getOneRecord(detailId,
EOrderTargetTypeAction.ORDER_DETAIL, EOrderAction.SHIP);
expressTrackDTO.setCreateTime(Optional.ofNullable(shipRecord)
.map(StoreOrderOperationRecordDTO::getOperationTime).orElse(null));
Long expressId = CollUtil.getFirst(entry.getValue()).getExpressId();
expressTrackDTO.setExpressId(expressId);
expressTrackDTO.setExpressName(expressNameMap.get(expressId));
expressTrackDTO.setExpressWaybillNo(entry.getKey());
expressTrackDTO.setGoodsSummary(StrUtil.join("; ", goodsSummaries));
expressTrackDTO.setRecords(trackRecordGroupMap.get(entry.getKey()));
expressTracks.add(expressTrackDTO);
}
orderInfo.setExpressTracks(expressTracks);
Map<String, String> regionMap = expressService.getRegionNameMapCache();
orderInfo.setDestinationProvinceName(regionMap.get(orderInfo.getDestinationProvinceCode()));
orderInfo.setDestinationCityName(regionMap.get(orderInfo.getDestinationCityCode()));
@ -449,6 +421,51 @@ public class StoreOrderServiceImpl implements IStoreOrderService {
return orderInfo;
}
@Override
public List<ExpressTrackDTO> getOrderExpressTracks(Long storeOrderId) {
Assert.notNull(storeOrderId);
//物流信息
Map<Long, String> expressNameMap = expressService.getAllExpressNameMap();
Map<String, List<StoreOrderDetail>> expressWaybillGroupMap = storeOrderDetailMapper.selectList(Wrappers
.lambdaQuery(StoreOrderDetail.class)
.eq(StoreOrderDetail::getStoreOrderId, storeOrderId)
.eq(SimpleEntity::getDelFlag, Constants.UNDELETED))
.stream()
.filter(o -> StrUtil.isNotEmpty(o.getExpressWaybillNo()))
.collect(Collectors.groupingBy(StoreOrderDetail::getExpressWaybillNo));
Map<String, List<ExpressTrackRecordDTO>> trackRecordGroupMap = expressService.listTrackRecord(
expressWaybillGroupMap.keySet())
.stream()
.collect(Collectors.groupingBy(ExpressTrackRecordDTO::getExpressWaybillNo));
List<ExpressTrackDTO> expressTracks = new ArrayList<>(expressWaybillGroupMap.size());
for (Map.Entry<String, List<StoreOrderDetail>> entry : expressWaybillGroupMap.entrySet()) {
ExpressTrackDTO expressTrackDTO = new ExpressTrackDTO();
List<String> goodsSummaries = entry.getValue().stream()
.map(o -> StrUtil.concat(true, o.getProdArtNum(), ", ", o.getColorName(), ", ",
String.valueOf(o.getSize()))).collect(Collectors.toList());
//发货时间
Long detailId = CollUtil.getFirst(entry.getValue()).getId();
StoreOrderOperationRecordDTO shipRecord = operationRecordService.getOneRecord(detailId,
EOrderTargetTypeAction.ORDER_DETAIL, EOrderAction.SHIP);
expressTrackDTO.setCreateTime(Optional.ofNullable(shipRecord)
.map(StoreOrderOperationRecordDTO::getOperationTime).orElse(null));
StoreOrderDetail oneDetail = CollUtil.getFirst(entry.getValue());
Long expressId = oneDetail.getExpressId();
expressTrackDTO.setExpressId(expressId);
expressTrackDTO.setExpressName(expressNameMap.get(expressId));
expressTrackDTO.setExpressWaybillNo(entry.getKey());
expressTrackDTO.setGoodsSummary(StrUtil.join("; ", goodsSummaries));
if (EExpressType.PLATFORM.getValue().equals(oneDetail.getExpressType())) {
expressTrackDTO.setRecords(trackRecordGroupMap.get(entry.getKey()));
} else {
//TODO 商家自发货,从三方接口查询轨迹
// String [] expressWaybillNos = entry.getKey().split(",");
}
expressTracks.add(expressTrackDTO);
}
return expressTracks;
}
@Override
public Page<StoreOrderPageItemDTO> page(StoreOrderQueryDTO queryDTO) {
Page<StoreOrderPageItemDTO> page = PageHelper.startPage(queryDTO.getPageNum(), queryDTO.getPageSize());