[fix]修改商户订单

This commit is contained in:
wangqx 2025-09-11 16:37:12 +08:00
parent cfa44d714e
commit 83084e2f78
9 changed files with 111 additions and 180 deletions

View File

@ -1,5 +1,9 @@
package org.dromara.app.merchant;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.vo.OrderVO;
import com.wzj.soopin.order.service.IMerchantOrderService;
import com.wzj.soopin.order.service.VerificationCodeService;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -25,6 +29,7 @@ public class AppMerchantOrderController {
private final VerificationCodeService verificationCodeService;
private final IMerchantOrderService merchantOrderService;
/**
* 扫码核销接口
* @return 核销结果
@ -62,5 +67,11 @@ public class AppMerchantOrderController {
return R.ok(verificationCodeService.scan(code));
}
@Tag(name ="查询订单列表")
@PostMapping("/page")
public R<IPage<OrderVO>> page(@RequestBody OrderBo bo){
LoginUser loginUser= LoginHelper.getLoginUser();
bo.setTenantId(loginUser.getTenantId());
return R.ok(merchantOrderService.page(bo));
}
}

View File

@ -15,9 +15,9 @@ import java.util.Map;
@Data
public class BaseBO <T> {
private Integer pageNum=1;
private Integer current=1;
private Integer pageSize=10;
private Integer size=10;
protected LocalDateTime beginTime;
@ -33,6 +33,6 @@ public class BaseBO <T> {
}
public Page<T> getPage() {
return new Page<>(pageNum, pageSize);
return new Page<>(current, size);
}
}

View File

@ -54,12 +54,16 @@ public class AccountBillVO extends BaseAudit {
@Excel(name = "来源")
private Integer source;
@Schema(description ="会员id")
private Long memberId;
@Schema(description ="会员名称")
private String userName;
@Schema(description ="会员头像")
private String avatar;
@Schema(description ="订单号")
private String orderSn;

View File

@ -1,22 +1,24 @@
package com.wzj.soopin.order.convert;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.bo.OrderItemBo;
import com.wzj.soopin.order.domain.entity.Order;
import com.wzj.soopin.order.domain.entity.OrderItem;
import com.wzj.soopin.order.domain.query.OrderItemQuery;
import com.wzj.soopin.order.domain.vo.AftersaleVO;
import com.wzj.soopin.order.domain.vo.OrderItemVO;
import com.wzj.soopin.order.domain.vo.OrderVO;
import org.dromara.common.web.core.BaseConverter;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import java.util.List;
/**
* 订单中所包含的商品 DO <=> DTO <=> VO / BO / Query
* 订单 DO <=> DTO <=> VO / BO / Query
*
* @author zcc
*/
@Mapper(componentModel = "spring")
public interface OrderItemConvert extends BaseConverter<OrderItemVO, OrderItemBo, OrderItem > {
public interface OrderItemConvert extends BaseConverter<OrderItemVO, OrderItemBo, OrderItem> {
// List<OrderItemVO> dos2vos(List<OrderItem> list);
// List<OrderVO> dos2vos(List<Order> list);
// OrderVO do2vo(Order order);
}

View File

@ -112,7 +112,7 @@ public class OrderVO extends BaseAudit {
@Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime paymentTime;
private List<OrderItem> items;
private List<OrderItemVO> items;
@Excel(name = "用户昵称")
@Schema(description ="用户昵称")

View File

@ -0,0 +1,12 @@
package com.wzj.soopin.order.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.entity.Order;
import com.wzj.soopin.order.domain.vo.OrderVO;
public interface IMerchantOrderService extends IService<Order> {
Page<OrderVO> page(OrderBo bo);
}

View File

@ -35,6 +35,7 @@ public class MemberOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
private final OrderConvert convert;
private final OrderItemMapper orderItemMapper;
private final SkuMapper skuMapper;
private final OrderItemConvert orderItemConvert;
@Override
public Page<OrderVO> page( OrderBo bo) {
Page<Order> resultPage = TenantHelper.ignore(() ->baseMapper.selectPage(bo.getPage(),bo.toWrapper()));
@ -59,36 +60,11 @@ public class MemberOrderServiceImpl extends ServiceImpl<OrderMapper, Order> impl
Map<Long, List<OrderItem>> orderItemMapByOrderId = orderItemList.stream()
.collect(Collectors.groupingBy(OrderItem::getOrderId));
// 获取所有sku_id
List<Long> skuIds = orderItemList.stream()
.map(OrderItem::getSkuId)
.collect(Collectors.toList());
// 根据sku_id查询pms_sku表数据
QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>();
skuQueryWrapper.in("id", skuIds);
List<Sku> skuList = skuMapper.selectList(skuQueryWrapper);
Map<Long, Sku> skuMapById = skuList.stream()
.collect(Collectors.toMap(Sku::getId, sku -> sku));
for (OrderVO orderVO : orderVOList) {
List<Map<String, Object>> productList = new ArrayList<>();
List<OrderItem> orderItems = orderItemMapByOrderId.get(orderVO.getId());
if (orderItems != null) {
for (OrderItem orderItem : orderItems) {
Sku sku = skuMapById.get(orderItem.getSkuId());
if (sku != null) {
Map<String, Object> productMap = new HashMap<>();
productMap.put("price", sku.getPrice());
productMap.put("pic", sku.getPic());
productMap.put("stock", sku.getStock());
productMap.put("spData", sku.getSpData());
productList.add(productMap);
}
}
orderVO.setItems(orderItemConvert.toVO(orderItems));
}
orderVO.setProductList(productList);
}
return orderVOPage;

View File

@ -0,0 +1,68 @@
package com.wzj.soopin.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wzj.soopin.goods.mapper.SkuMapper;
import com.wzj.soopin.order.convert.OrderConvert;
import com.wzj.soopin.order.convert.OrderItemConvert;
import com.wzj.soopin.order.domain.bo.OrderBo;
import com.wzj.soopin.order.domain.entity.Order;
import com.wzj.soopin.order.domain.entity.OrderItem;
import com.wzj.soopin.order.domain.vo.OrderVO;
import com.wzj.soopin.order.mapper.OrderItemMapper;
import com.wzj.soopin.order.mapper.OrderMapper;
import com.wzj.soopin.order.service.IMemberOrderService;
import com.wzj.soopin.order.service.IMerchantOrderService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.tenant.helper.TenantHelper;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@Slf4j
public class MerchantOrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IMerchantOrderService {
private final OrderConvert convert;
private final OrderItemMapper orderItemMapper;
private final SkuMapper skuMapper;
private final OrderItemConvert orderItemConvert;
@Override
public Page<OrderVO> page( OrderBo bo) {
Page<Order> resultPage = baseMapper.selectPage(bo.getPage(),bo.toWrapper());
Page<OrderVO> orderVOPage = convert.toVO(resultPage);
List<OrderVO> orderVOList = orderVOPage.getRecords();
if (orderVOList.isEmpty()) {
return orderVOPage;
}
// 获取所有订单id
List<Long> orderIds = orderVOList.stream()
.map(OrderVO::getId)
.collect(Collectors.toList());
// 根据订单id查询订单详情
QueryWrapper<OrderItem> orderItemQueryWrapper = new QueryWrapper<>();
orderItemQueryWrapper.in("order_id", orderIds);
List<OrderItem> orderItemList = orderItemMapper.selectList(orderItemQueryWrapper);
// 按照订单id分组订单详情
Map<Long, List<OrderItem>> orderItemMapByOrderId = orderItemList.stream()
.collect(Collectors.groupingBy(OrderItem::getOrderId));
for (OrderVO orderVO : orderVOList) {
List<OrderItem> orderItems = orderItemMapByOrderId.get(orderVO.getId());
if (orderItems != null) {
orderVO.setItems(orderItemConvert.toVO(orderItems));
}
}
return orderVOPage;
}
}

View File

@ -283,67 +283,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
}
/**
* 删除订单表信息
*
* @param id 订单表主键
* @return 结果
*/
public R<Order> deleteById(Long id) {
Order order = orderMapper.selectById(id);
if (order == null) {
return R.fail("订单不存在");
}
int affectedRows = orderMapper.deleteById(id);
return affectedRows > 0 ? R.ok(order) : R.fail("删除失败");
}
public PageImpl<Object> queryOrderPage(OrderH5Query query, Pageable pageReq) {
QueryWrapper<Order> qw = new QueryWrapper<>();
qw.eq("member_id", SecurityUtils.getUserId());
IPage<Order> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>();
page.setCurrent(pageReq.getPageNumber())
.setSize(pageReq.getPageSize());
if (CollUtil.isEmpty(pageReq.getSort())) {
pageReq.getSort().forEach(it -> {
qw.orderBy(true, it.getDirection().isAscending(), it.getProperty());
});
}
Integer tab = query.getTab();
if (tab != null) {
qw.eq("delete_status", 0);
if (tab == 1) {
qw.eq("status", 0);
} else if (tab == 2) {
qw.eq("status", 1);
qw.eq("aftersale_status", 1);
} else if (tab == 3) {
qw.eq("status", 2);
qw.eq("confirm_status", 0);
} else if (tab == 4) {
qw.eq("status", 2);
qw.eq("confirm_status", 1);
}
}
orderMapper.selectPage(page, qw);
List<Order> orders = page.getRecords();
long total = page.getPages();
if (CollUtil.isEmpty(orders)) {
return new PageImpl<>(Collections.emptyList(), pageReq, total);
}
LambdaQueryWrapper<OrderItem> qw1 = new LambdaQueryWrapper<>();
qw1.in(OrderItem::getOrderId, orders.stream().map(Order::getId).collect(Collectors.toList()));
Map<Long, List<OrderItem>> oid2items = orderItemMapper.selectList(qw1)
.stream().collect(Collectors.groupingBy(OrderItem::getOrderId));
// List<OrderVO> res = orderConvert.dos2vos(orders);
// res.forEach(it -> {
// it.setItems(oid2items.get(it.getId()));
// });
// return new PageImpl<>(res, pageReq, total);
return null;
}
@Override
@ -367,88 +307,6 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
return R.fail("更新失败");
}
// /**
// * 管理后台发货
// * 目前发货是这样的待发货已发货已完成都能执行发货每次都会创建一条新的发货记录且修改订单发货信息
// * @param request 发货请求
// * @param userId 操作人
// * @return 结果
// */
// @Transactional
// public String deliverProduct(DeliverProductForm request, Long userId) {
// //查询订单
// Order order = orderMapper.selectById(request.getOrderId());
// QueryWrapper<OrderItem> qw = new QueryWrapper<>();
// qw.eq("order_id", request.getOrderId());
// List<OrderItem> orderItemList = orderItemMapper.selectList(qw);
// if (order == null || CollectionUtil.isEmpty(orderItemList)){
// throw new RuntimeException("未找到该订单信息");
// }
// // 是否为待发货已发货 已完成
// if (!(Constants.OrderStatus.SEND.equals(order.getStatus())
// || Constants.OrderStatus.GET.equals(order.getStatus())
// || Constants.OrderStatus.CONFIRM.equals(order.getStatus()))){
// throw new RuntimeException("订单状态错误");
// }
// Integer orderStatus =
// Constants.OrderStatus.SEND.equals(order.getStatus()) ? Constants.OrderStatus.GET : order.getStatus();
// //更新订单
// LocalDateTime optDate = LocalDateTime.now();
// order.setUpdateBy(null);
// order.setStatus(orderStatus);
// order.setDeliveryTime(optDate);
// order.setUpdateTime(optDate);
// order.setDeliveryCompany(request.getExpressName());
// order.setDeliverySn(request.getExpressSn());
// orderMapper.updateById(order);
// //创建新的发货记录
// this.createDeliveryHistory(request, userId, optDate);
// //创建订单操作记录
// this.createOrderOptHistory(order.getId(), order.getOrderSn(), orderStatus, userId, optDate);
// return "发货成功";
// }
/**
* 创建发货记录
* @param request 发货请求
* @param userId 操作人
* @param optDate 操作时间
*/
private void createDeliveryHistory(DeliverProductForm request, Long userId, LocalDateTime optDate){
OrderDeliveryHistory orderDeliveryHistory = new OrderDeliveryHistory();
orderDeliveryHistory.setOrderId(request.getOrderId());
orderDeliveryHistory.setDeliveryCompany(request.getExpressName());
orderDeliveryHistory.setDeliverySn(request.getExpressSn());
orderDeliveryHistory.setCreateTime(optDate);
orderDeliveryHistory.setCreateBy(userId);
int rows = orderDeliveryHistoryMapper.insert(orderDeliveryHistory);
if (rows < 1) {
throw new RuntimeException("新增订单发货记录失败");
}
}
/**
* 创建订单操作历史
* @param orderId 订单id
* @param orderStatus 订单状态
* @param userId 操作人
* @param optDate 操作时间
*/
private void createOrderOptHistory(Long orderId, String orderSn, Integer orderStatus, Long userId, LocalDateTime optDate){
OrderOperateHistory optHistory = new OrderOperateHistory();
optHistory.setOrderId(orderId);
optHistory.setOrderSn(orderSn);
optHistory.setOperateMan(SecurityUtils.getUsername());
optHistory.setOrderStatus(orderStatus);
optHistory.setCreateTime(optDate);
optHistory.setCreateBy(userId);
optHistory.setUpdateBy(userId);
optHistory.setUpdateTime(optDate);
int rows = orderOperateHistoryMapper.insert(optHistory);
if (rows < 1) {
throw new RuntimeException("新增订单操作记录失败");
}
}
/**
* 根据订单id查询订单操作日志