- 添加确认订单
- 添加查看物流
This commit is contained in:
parent
209725a25b
commit
fa5ea5dfd9
@ -0,0 +1,35 @@
|
|||||||
|
package cn.iocoder.mall.order.application.controller.users;
|
||||||
|
|
||||||
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
|
import cn.iocoder.mall.order.api.OrderLogisticsService;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
|
||||||
|
import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流 controller
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-04-12 22:24
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("users/order_logistics")
|
||||||
|
@Api(description = "订单物流信息")
|
||||||
|
public class OrderLogisticsController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderLogisticsService orderLogisticsService;
|
||||||
|
|
||||||
|
@GetMapping("logistics_info")
|
||||||
|
@ApiOperation("物流详细 - 返回订单所关联的所有物流信息")
|
||||||
|
public CommonResult<OrderLogisticsInfoBO> logisticsInfo(@RequestParam("orderId") Integer orderId) {
|
||||||
|
Integer userId = UserSecurityContextHolder.getContext().getUserId();
|
||||||
|
return orderLogisticsService.logisticsInfo(userId, orderId);
|
||||||
|
}
|
||||||
|
}
|
@ -15,6 +15,7 @@ import cn.iocoder.mall.order.application.po.user.OrderCreatePO;
|
|||||||
import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO;
|
import cn.iocoder.mall.order.application.vo.UsersOrderConfirmCreateVO;
|
||||||
import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder;
|
import cn.iocoder.mall.user.sdk.context.UserSecurityContextHolder;
|
||||||
import com.alibaba.dubbo.config.annotation.Reference;
|
import com.alibaba.dubbo.config.annotation.Reference;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -28,6 +29,7 @@ import java.util.Collections;
|
|||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("users/order")
|
@RequestMapping("users/order")
|
||||||
|
@Api(description = "用户订单")
|
||||||
public class UsersOrderController {
|
public class UsersOrderController {
|
||||||
|
|
||||||
@Reference(validation = "true")
|
@Reference(validation = "true")
|
||||||
@ -50,7 +52,7 @@ public class UsersOrderController {
|
|||||||
return orderService.createOrder(orderCreateDTO);
|
return orderService.createOrder(orderCreateDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/confirm_create_order")
|
@GetMapping("confirm_create_order")
|
||||||
public CommonResult<UsersOrderConfirmCreateVO> getConfirmCreateOrder(@RequestParam("skuId") Integer skuId,
|
public CommonResult<UsersOrderConfirmCreateVO> getConfirmCreateOrder(@RequestParam("skuId") Integer skuId,
|
||||||
@RequestParam("quantity") Integer quantity) {
|
@RequestParam("quantity") Integer quantity) {
|
||||||
// 创建 CalcOrderPriceDTO 对象,并执行价格计算
|
// 创建 CalcOrderPriceDTO 对象,并执行价格计算
|
||||||
@ -64,4 +66,10 @@ public class UsersOrderController {
|
|||||||
return CommonResult.success(CartConvert.INSTANCE.convert(calcOrderPriceResult.getData()));
|
return CommonResult.success(CartConvert.INSTANCE.convert(calcOrderPriceResult.getData()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("confirm_receiving")
|
||||||
|
public CommonResult confirmReceiving(@RequestParam("orderId") Integer orderId) {
|
||||||
|
Integer userId = UserSecurityContextHolder.getContext().getUserId();
|
||||||
|
return orderService.confirmReceiving(userId, orderId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package cn.iocoder.mall.order.api;
|
||||||
|
|
||||||
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsBO;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流信息
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-04-12 21:29
|
||||||
|
*/
|
||||||
|
public interface OrderLogisticsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物流信息
|
||||||
|
*
|
||||||
|
* @param userId
|
||||||
|
* @param orderId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommonResult<OrderLogisticsInfoBO> logisticsInfo(Integer userId, Integer orderId);
|
||||||
|
|
||||||
|
}
|
@ -97,6 +97,15 @@ public interface OrderService {
|
|||||||
*/
|
*/
|
||||||
CommonResult deleteOrderItem(OrderItemDeletedDTO orderItemDeletedDTO);
|
CommonResult deleteOrderItem(OrderItemDeletedDTO orderItemDeletedDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户确认订单
|
||||||
|
*
|
||||||
|
* @param userId
|
||||||
|
* @param orderId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommonResult confirmReceiving(Integer userId, Integer orderId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新订单 - 收件这信息
|
* 更新订单 - 收件这信息
|
||||||
*
|
*
|
||||||
|
@ -0,0 +1,96 @@
|
|||||||
|
package cn.iocoder.mall.order.api.bo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流 - 详细信息
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-04-12 22:03
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class OrderLogisticsInfoBO implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单id
|
||||||
|
*/
|
||||||
|
private Integer orderId;
|
||||||
|
/**
|
||||||
|
* 订单编号
|
||||||
|
*/
|
||||||
|
private String orderNo;
|
||||||
|
/**
|
||||||
|
* 物流信息
|
||||||
|
*/
|
||||||
|
private List<Logistics> logistics;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public static class Logistics {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 收件区域编号
|
||||||
|
*/
|
||||||
|
private String areaNo;
|
||||||
|
/**
|
||||||
|
* 收件人名称
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 收件手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 收件详细地址
|
||||||
|
*/
|
||||||
|
private String address;
|
||||||
|
/**
|
||||||
|
* 物流 (字典)
|
||||||
|
*/
|
||||||
|
private Integer logistics;
|
||||||
|
/**
|
||||||
|
* 物流编号
|
||||||
|
*/
|
||||||
|
private String logisticsNo;
|
||||||
|
|
||||||
|
///
|
||||||
|
/// 物流信息
|
||||||
|
|
||||||
|
private List<LogisticsDetail> details;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public static class LogisticsDetail {
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 物流id
|
||||||
|
*/
|
||||||
|
private Integer orderLogisticsId;
|
||||||
|
/**
|
||||||
|
* 物流时间
|
||||||
|
*/
|
||||||
|
private Date logisticsTime;
|
||||||
|
/**
|
||||||
|
* 物流时间 text
|
||||||
|
*/
|
||||||
|
private String logisticsTimeText;
|
||||||
|
/**
|
||||||
|
* 物流信息
|
||||||
|
*/
|
||||||
|
private String logisticsInformation;
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,8 @@ public enum OrderErrorCodeEnum {
|
|||||||
ORDER_GET_GOODS_INFO_INCORRECT(1008000008, "获取额商品信息不正确!"),
|
ORDER_GET_GOODS_INFO_INCORRECT(1008000008, "获取额商品信息不正确!"),
|
||||||
ORDER_GET_USER_ADDRESS_FAIL(1008000009, "获取用户地址失败!"),
|
ORDER_GET_USER_ADDRESS_FAIL(1008000009, "获取用户地址失败!"),
|
||||||
ORDER_GET_PAY_FAIL(1008000010, "调用pay失败!"),
|
ORDER_GET_PAY_FAIL(1008000010, "调用pay失败!"),
|
||||||
|
ORDER_NOT_USER_ORDER(1008000011, "不是该用户的订单!"),
|
||||||
|
ORDER_UNABLE_CONFIRM_ORDER(1008000012, "状态不对不能确认订单!"),
|
||||||
|
|
||||||
// order item
|
// order item
|
||||||
ORDER_ITEM_ONLY_ONE(1008000200, "订单Item只有一个!"),
|
ORDER_ITEM_ONLY_ONE(1008000200, "订单Item只有一个!"),
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cn.iocoder.mall.order.biz.convert;
|
package cn.iocoder.mall.order.biz.convert;
|
||||||
|
|
||||||
import cn.iocoder.mall.order.api.bo.OrderLogisticsBO;
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsBO;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
|
||||||
import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
|
import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
|
||||||
import cn.iocoder.mall.order.api.dto.OrderDeliveryDTO;
|
import cn.iocoder.mall.order.api.dto.OrderDeliveryDTO;
|
||||||
import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO;
|
import cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO;
|
||||||
@ -33,5 +34,5 @@ public interface OrderLogisticsConvert {
|
|||||||
OrderLogisticsDO convert(OrderRecipientDO orderRecipientDO);
|
OrderLogisticsDO convert(OrderRecipientDO orderRecipientDO);
|
||||||
|
|
||||||
@Mappings({})
|
@Mappings({})
|
||||||
List<OrderLogisticsBO> convertOrderLogisticsBO(List<OrderLogisticsDO> orderLogisticsDOList);
|
List<OrderLogisticsInfoBO.Logistics> convertLogistics(List<OrderLogisticsDO> orderLogisticsDOList);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package cn.iocoder.mall.order.biz.convert;
|
||||||
|
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mappings;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流 convert
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-03-23 14:39
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface OrderLogisticsDetailConvert {
|
||||||
|
|
||||||
|
OrderLogisticsDetailConvert INSTANCE = Mappers.getMapper(OrderLogisticsDetailConvert.class);
|
||||||
|
|
||||||
|
@Mappings({})
|
||||||
|
List<OrderLogisticsInfoBO.LogisticsDetail> convertLogisticsDetail(List<OrderLogisticsDetailDO> orderLogisticsDOList);
|
||||||
|
}
|
@ -33,9 +33,13 @@ public interface OrderItemMapper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新 - 根据 orderId
|
* 更新 - 根据 orderId
|
||||||
|
* @param orderId
|
||||||
* @param orderItemDO
|
* @param orderItemDO
|
||||||
*/
|
*/
|
||||||
void updateByOrderId(@Param("orderItemDO") OrderItemDO orderItemDO);
|
void updateByOrderId(
|
||||||
|
@Param("orderId") Integer orderId,
|
||||||
|
@Param("orderItemDO") OrderItemDO orderItemDO
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新 - 根据Ids
|
* 更新 - 根据Ids
|
||||||
@ -63,7 +67,7 @@ public interface OrderItemMapper {
|
|||||||
* @param deleted
|
* @param deleted
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<OrderItemDO> selectByOrderIdsAndDeleted(
|
List<OrderItemDO> selectByDeletedAndOrderIds(
|
||||||
@Param("orderIds") Collection<Integer> orderIds,
|
@Param("orderIds") Collection<Integer> orderIds,
|
||||||
@Param("deleted") Integer deleted
|
@Param("deleted") Integer deleted
|
||||||
);
|
);
|
||||||
@ -74,7 +78,7 @@ public interface OrderItemMapper {
|
|||||||
* @param orderId
|
* @param orderId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<OrderItemDO> selectByOrderIdAndDeleted(
|
List<OrderItemDO> selectByDeletedAndOrderId(
|
||||||
@Param("orderId") Integer orderId,
|
@Param("orderId") Integer orderId,
|
||||||
@Param("deleted") @NotNull Integer deleted
|
@Param("deleted") @NotNull Integer deleted
|
||||||
);
|
);
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
package cn.iocoder.mall.order.biz.dao;
|
||||||
|
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流 - 物流详细信息
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-04-12 21:35
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public interface OrderLogisticsDetailMapper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 插入
|
||||||
|
*
|
||||||
|
* @param orderLogisticsDetailDO
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int insert(OrderLogisticsDetailDO orderLogisticsDetailDO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询 - 根据 物流id
|
||||||
|
*
|
||||||
|
* @param orderLogisticsId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderLogisticsDetailDO> selectByOrderLogisticsId(
|
||||||
|
@Param("orderLogisticsId") Integer orderLogisticsId
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询 - 根据 物流ids
|
||||||
|
*
|
||||||
|
* @param orderLogisticsIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OrderLogisticsDetailDO> selectByOrderLogisticsIds(
|
||||||
|
@Param("orderLogisticsIds") Collection<Integer> orderLogisticsIds
|
||||||
|
);
|
||||||
|
}
|
@ -31,7 +31,7 @@ public interface OrderLogisticsMapper {
|
|||||||
void updateById(OrderLogisticsDO orderLogisticsDO);
|
void updateById(OrderLogisticsDO orderLogisticsDO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询 - 根据 orderId
|
* 查询 - 根据 ids
|
||||||
*
|
*
|
||||||
* @param ids
|
* @param ids
|
||||||
* @return
|
* @return
|
||||||
@ -39,4 +39,5 @@ public interface OrderLogisticsMapper {
|
|||||||
List<OrderLogisticsDO> selectByIds(
|
List<OrderLogisticsDO> selectByIds(
|
||||||
@Param("ids") Collection<Integer> ids
|
@Param("ids") Collection<Integer> ids
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,6 @@ public class OrderLogisticsDO extends BaseDO {
|
|||||||
* id
|
* id
|
||||||
*/
|
*/
|
||||||
private Integer id;
|
private Integer id;
|
||||||
/**
|
|
||||||
* 订单编号
|
|
||||||
*/
|
|
||||||
private Integer orderId;
|
|
||||||
/**
|
/**
|
||||||
* 收件区域编号
|
* 收件区域编号
|
||||||
*/
|
*/
|
||||||
|
@ -0,0 +1,111 @@
|
|||||||
|
package cn.iocoder.mall.order.biz.service;
|
||||||
|
|
||||||
|
import cn.iocoder.common.framework.constant.DeletedStatusEnum;
|
||||||
|
import cn.iocoder.common.framework.util.DateUtil;
|
||||||
|
import cn.iocoder.common.framework.util.ServiceExceptionUtil;
|
||||||
|
import cn.iocoder.common.framework.vo.CommonResult;
|
||||||
|
import cn.iocoder.mall.order.api.OrderLogisticsService;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsBO;
|
||||||
|
import cn.iocoder.mall.order.api.bo.OrderLogisticsInfoBO;
|
||||||
|
import cn.iocoder.mall.order.api.constant.OrderErrorCodeEnum;
|
||||||
|
import cn.iocoder.mall.order.biz.convert.OrderLogisticsConvert;
|
||||||
|
import cn.iocoder.mall.order.biz.convert.OrderLogisticsDetailConvert;
|
||||||
|
import cn.iocoder.mall.order.biz.dao.OrderItemMapper;
|
||||||
|
import cn.iocoder.mall.order.biz.dao.OrderLogisticsDetailMapper;
|
||||||
|
import cn.iocoder.mall.order.biz.dao.OrderLogisticsMapper;
|
||||||
|
import cn.iocoder.mall.order.biz.dao.OrderMapper;
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderDO;
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderItemDO;
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO;
|
||||||
|
import cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单物流
|
||||||
|
*
|
||||||
|
* @author Sin
|
||||||
|
* @time 2019-04-12 21:32
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class OrderLogisticsServiceImpl implements OrderLogisticsService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private OrderMapper orderMapper;
|
||||||
|
@Autowired
|
||||||
|
private OrderItemMapper orderItemMapper;
|
||||||
|
@Autowired
|
||||||
|
private OrderLogisticsMapper orderLogisticsMapper;
|
||||||
|
@Autowired
|
||||||
|
private OrderLogisticsDetailMapper orderLogisticsDetailMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult<OrderLogisticsInfoBO> logisticsInfo(Integer userId, Integer orderId) {
|
||||||
|
OrderDO orderDO = orderMapper.selectById(orderId);
|
||||||
|
|
||||||
|
if (orderDO == null) {
|
||||||
|
return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_NOT_EXISTENT.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!userId.equals(orderDO.getUserId())) {
|
||||||
|
return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_NOT_USER_ORDER.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取订单所发货的订单 id
|
||||||
|
List<OrderItemDO> orderItemDOList = orderItemMapper.selectByDeletedAndOrderId(
|
||||||
|
orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
|
|
||||||
|
// 获取物流 信息
|
||||||
|
Set<Integer> orderLogisticsIds = orderItemDOList.stream()
|
||||||
|
.map(o -> o.getOrderLogisticsId()).collect(Collectors.toSet());
|
||||||
|
|
||||||
|
List<OrderLogisticsDO> orderLogisticsDOList = orderLogisticsMapper.selectByIds(orderLogisticsIds);
|
||||||
|
|
||||||
|
List<OrderLogisticsDetailDO> orderLogisticsDetailDOList
|
||||||
|
= orderLogisticsDetailMapper.selectByOrderLogisticsIds(orderLogisticsIds);
|
||||||
|
|
||||||
|
// 转换 return 的数据
|
||||||
|
List<OrderLogisticsInfoBO.Logistics> logistics
|
||||||
|
= OrderLogisticsConvert.INSTANCE.convertLogistics(orderLogisticsDOList);
|
||||||
|
|
||||||
|
List<OrderLogisticsInfoBO.LogisticsDetail> logisticsDetails
|
||||||
|
= OrderLogisticsDetailConvert.INSTANCE.convertLogisticsDetail(orderLogisticsDetailDOList);
|
||||||
|
|
||||||
|
logisticsDetails.stream().map(o -> {
|
||||||
|
o.setLogisticsTimeText(DateUtil.format(o.getLogisticsTime(), "yyyy-MM-dd HH:mm"));
|
||||||
|
return o;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
Map<Integer, List<OrderLogisticsInfoBO.LogisticsDetail>> logisticsDetailMultimap
|
||||||
|
= logisticsDetails.stream().collect(
|
||||||
|
Collectors.toMap(
|
||||||
|
o -> o.getOrderLogisticsId(),
|
||||||
|
item -> Lists.newArrayList(item),
|
||||||
|
(oldVal, newVal) -> {
|
||||||
|
oldVal.addAll(newVal);
|
||||||
|
return oldVal;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
logistics.stream().map(o -> {
|
||||||
|
if (logisticsDetailMultimap.containsKey(o.getId())) {
|
||||||
|
o.setDetails(logisticsDetailMultimap.get(o.getId()));
|
||||||
|
}
|
||||||
|
return o;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
return CommonResult.success(
|
||||||
|
new OrderLogisticsInfoBO()
|
||||||
|
.setOrderId(orderId)
|
||||||
|
.setOrderNo(orderDO.getOrderNo())
|
||||||
|
.setLogistics(logistics)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -96,7 +96,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
// 获取 订单的 items
|
// 获取 订单的 items
|
||||||
List<OrderItemDO> orderItemDOList = orderItemMapper
|
List<OrderItemDO> orderItemDOList = orderItemMapper
|
||||||
.selectByOrderIdsAndDeleted(orderIds, DeletedStatusEnum.DELETED_NO.getValue());
|
.selectByDeletedAndOrderIds(orderIds, DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
|
|
||||||
List<OrderItemBO> orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemDO(orderItemDOList);
|
List<OrderItemBO> orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemDO(orderItemDOList);
|
||||||
Map<Integer, List<OrderItemBO>> orderItemBOMultimap = orderItemBOList.stream().collect(
|
Map<Integer, List<OrderItemBO>> orderItemBOMultimap = orderItemBOList.stream().collect(
|
||||||
@ -135,7 +135,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<OrderItemDO> orderItemDOList = orderItemMapper
|
List<OrderItemDO> orderItemDOList = orderItemMapper
|
||||||
.selectByOrderIdAndDeleted(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
.selectByDeletedAndOrderId(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
|
|
||||||
List<OrderItemBO> orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemBO(orderItemDOList);
|
List<OrderItemBO> orderItemBOList = OrderItemConvert.INSTANCE.convertOrderItemBO(orderItemDOList);
|
||||||
return CommonResult.success(orderItemBOList);
|
return CommonResult.success(orderItemBOList);
|
||||||
@ -310,7 +310,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
orderItemMapper.updateById(new OrderItemDO().setId(orderItemId).setPayAmount(payAmount));
|
orderItemMapper.updateById(new OrderItemDO().setId(orderItemId).setPayAmount(payAmount));
|
||||||
|
|
||||||
// 再重新计算订单金额
|
// 再重新计算订单金额
|
||||||
List<OrderItemDO> orderItemDOList = orderItemMapper.selectByOrderIdAndDeleted(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
List<OrderItemDO> orderItemDOList = orderItemMapper.selectByDeletedAndOrderId(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
Integer orderPayAmount = orderCommon.calculatedAmount(orderItemDOList);
|
Integer orderPayAmount = orderCommon.calculatedAmount(orderItemDOList);
|
||||||
orderMapper.updateById(new OrderDO().setId(orderId).setPayAmount(orderPayAmount));
|
orderMapper.updateById(new OrderDO().setId(orderId).setPayAmount(orderPayAmount));
|
||||||
return CommonResult.success(null);
|
return CommonResult.success(null);
|
||||||
@ -341,9 +341,8 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
// 关闭订单,修改状态 item
|
// 关闭订单,修改状态 item
|
||||||
orderItemMapper.updateByOrderId(
|
orderItemMapper.updateByOrderId(
|
||||||
new OrderItemDO()
|
orderId,
|
||||||
.setOrderId(orderId)
|
new OrderItemDO().setStatus(OrderStatusEnum.CLOSED.getValue())
|
||||||
.setStatus(OrderStatusEnum.CLOSED.getValue())
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// 关闭订单,修改状态 order
|
// 关闭订单,修改状态 order
|
||||||
@ -360,7 +359,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
// 获取所有订单 items
|
// 获取所有订单 items
|
||||||
List<OrderItemDO> allOrderItems = orderItemMapper
|
List<OrderItemDO> allOrderItems = orderItemMapper
|
||||||
.selectByOrderIdAndDeleted(orderDelivery.getOrderId(), DeletedStatusEnum.DELETED_NO.getValue());
|
.selectByDeletedAndOrderId(orderDelivery.getOrderId(), DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
|
|
||||||
// 当前需要发货订单,检查 id 和 status
|
// 当前需要发货订单,检查 id 和 status
|
||||||
List<OrderItemDO> needDeliveryOrderItems = allOrderItems.stream()
|
List<OrderItemDO> needDeliveryOrderItems = allOrderItems.stream()
|
||||||
@ -425,7 +424,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
// 获取当前有效的订单 item
|
// 获取当前有效的订单 item
|
||||||
List<OrderItemDO> orderItemDOList = orderItemMapper
|
List<OrderItemDO> orderItemDOList = orderItemMapper
|
||||||
.selectByOrderIdAndDeleted(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
.selectByDeletedAndOrderId(orderId, DeletedStatusEnum.DELETED_NO.getValue());
|
||||||
|
|
||||||
List<OrderItemDO> effectiveOrderItems = orderItemDOList.stream()
|
List<OrderItemDO> effectiveOrderItems = orderItemDOList.stream()
|
||||||
.filter(orderItemDO -> !orderItemIds.contains(orderItemDO.getId()))
|
.filter(orderItemDO -> !orderItemIds.contains(orderItemDO.getId()))
|
||||||
@ -453,6 +452,36 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
return CommonResult.success(null);
|
return CommonResult.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult confirmReceiving(Integer userId, Integer orderId) {
|
||||||
|
OrderDO orderDO = orderMapper.selectById(orderId);
|
||||||
|
|
||||||
|
// 是否该用户的订单
|
||||||
|
if (!userId.equals(orderDO.getUserId())) {
|
||||||
|
return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_NOT_USER_ORDER.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (OrderStatusEnum.ALREADY_SHIPMENT.getValue() != orderDO.getStatus()) {
|
||||||
|
return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_UNABLE_CONFIRM_ORDER.getCode());
|
||||||
|
}
|
||||||
|
|
||||||
|
orderMapper.updateById(
|
||||||
|
new OrderDO()
|
||||||
|
.setId(orderId)
|
||||||
|
.setReceiverTime(new Date())
|
||||||
|
.setStatus(OrderStatusEnum.COMPLETED.getValue())
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
orderItemMapper.updateByOrderId(
|
||||||
|
orderId,
|
||||||
|
new OrderItemDO()
|
||||||
|
.setStatus(OrderStatusEnum.COMPLETED.getValue())
|
||||||
|
.setReceiverTime(new Date())
|
||||||
|
);
|
||||||
|
return CommonResult.success(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResult updateLogistics(OrderLogisticsUpdateDTO orderLogisticsDTO) {
|
public CommonResult updateLogistics(OrderLogisticsUpdateDTO orderLogisticsDTO) {
|
||||||
OrderLogisticsDO orderLogisticsDO = OrderLogisticsConvert.INSTANCE.convert(orderLogisticsDTO);
|
OrderLogisticsDO orderLogisticsDO = OrderLogisticsConvert.INSTANCE.convert(orderLogisticsDTO);
|
||||||
|
@ -34,12 +34,12 @@
|
|||||||
-->
|
-->
|
||||||
<sql id="updateFieldSql" >
|
<sql id="updateFieldSql" >
|
||||||
<set>
|
<set>
|
||||||
<!--<if test="orderItemDO.orderId != null">-->
|
<if test="orderItemDO.orderId != null">
|
||||||
<!--, order_id = #{orderItemDO.orderId}-->
|
, order_id = #{orderItemDO.orderId}
|
||||||
<!--</if>-->
|
</if>
|
||||||
<!--<if test="orderItemDO.orderNo != null">-->
|
<if test="orderItemDO.orderNo != null">
|
||||||
<!--, order_no = #{orderItemDO.orderNo}-->
|
, order_no = #{orderItemDO.orderNo}
|
||||||
<!--</if>-->
|
</if>
|
||||||
<if test="orderItemDO.orderLogisticsId != null">
|
<if test="orderItemDO.orderLogisticsId != null">
|
||||||
, order_logistics_id = #{orderItemDO.orderLogisticsId}
|
, order_logistics_id = #{orderItemDO.orderLogisticsId}
|
||||||
</if>
|
</if>
|
||||||
@ -123,7 +123,7 @@
|
|||||||
<update id="updateByOrderId">
|
<update id="updateByOrderId">
|
||||||
UPDATE `order_item`
|
UPDATE `order_item`
|
||||||
<include refid="updateFieldSql" />
|
<include refid="updateFieldSql" />
|
||||||
WHERE order_id = #{orderItemDO.orderId}
|
WHERE order_id = #{orderId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -142,7 +142,7 @@
|
|||||||
<!--
|
<!--
|
||||||
查询 - 根据 orderId 下的 item
|
查询 - 根据 orderId 下的 item
|
||||||
-->
|
-->
|
||||||
<select id="selectByOrderIdAndDeleted" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
|
<select id="selectByDeletedAndOrderId" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
|
||||||
SELECT * FROM `order_item`
|
SELECT * FROM `order_item`
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
<if test="deleted">
|
<if test="deleted">
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<!--
|
<!--
|
||||||
查询 - 根据 orderIds 和 status
|
查询 - 根据 orderIds 和 status
|
||||||
-->
|
-->
|
||||||
<select id="selectByOrderIdsAndDeleted" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
|
<select id="selectByDeletedAndOrderIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderItemDO">
|
||||||
SELECT
|
SELECT
|
||||||
<include refid="FIELDS" />
|
<include refid="FIELDS" />
|
||||||
FROM `order_item`
|
FROM `order_item`
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.iocoder.mall.order.biz.dao.OrderLogisticsDetailMapper">
|
||||||
|
|
||||||
|
<sql id="FIELDS">
|
||||||
|
id
|
||||||
|
,
|
||||||
|
order_logistics_id,
|
||||||
|
logistics_time,
|
||||||
|
logistics_information,
|
||||||
|
create_time,
|
||||||
|
update_time
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
插入
|
||||||
|
-->
|
||||||
|
<insert id="insert" parameterType="CartItemDO" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
|
||||||
|
INSERT INTO cart_item (order_logistics_id, logistics_time, logistics_information,
|
||||||
|
create_time, update_time)
|
||||||
|
VALUES (#{orderLogisticsId}, #{logisticsTime}, #{logisticsInformation},
|
||||||
|
#{createTime}, #{updateTime})
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
查询 - 根据 物流id
|
||||||
|
-->
|
||||||
|
<select id="selectByOrderLogisticsId"
|
||||||
|
resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
|
||||||
|
SELECT
|
||||||
|
<include refid="FIELDS"/>
|
||||||
|
FROM order_logistics_detail
|
||||||
|
WHERE order_logistics_id = #{orderLogisticsId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
查询 - 根据 物流ids
|
||||||
|
-->
|
||||||
|
<select id="selectByOrderLogisticsIds"
|
||||||
|
resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDetailDO">
|
||||||
|
SELECT
|
||||||
|
<include refid="FIELDS"/>
|
||||||
|
FROM order_logistics_detail
|
||||||
|
WHERE order_logistics_id IN
|
||||||
|
<foreach collection="orderLogisticsIds" item="orderLogisticsId" separator="," open="(" close=")">
|
||||||
|
#{orderLogisticsId}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -54,7 +54,7 @@
|
|||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
查询 - 根据 orderId
|
查询 - 根据 ids
|
||||||
-->
|
-->
|
||||||
<select id="selectByIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO">
|
<select id="selectByIds" resultType="cn.iocoder.mall.order.biz.dataobject.OrderLogisticsDO">
|
||||||
SELECT
|
SELECT
|
||||||
|
Loading…
Reference in New Issue
Block a user