Commit 3ab6e756 authored by shengnan hu's avatar shengnan hu
Browse files

init

parents
Pipeline #294 passed with stage
in 2 minutes and 13 seconds
package com.mall4j.cloud.order.model;
import java.io.Serializable;
import java.util.Date;
import com.mall4j.cloud.common.model.BaseModel;
/**
* 订单项
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public class OrderItem extends BaseModel implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 订单项ID
*/
private Long orderItemId;
/**
* 店铺id
*/
private Long shopId;
/**
* 订单id
*/
private Long orderId;
/**
* 产品ID
*/
private Long spuId;
/**
* 产品SkuID
*/
private Long skuId;
/**
* 用户Id
*/
private Long userId;
/**
* 购物车产品个数
*/
private Integer count;
/**
* 产品名称
*/
private String spuName;
/**
* sku名称
*/
private String skuName;
/**
* 产品主图片路径
*/
private String pic;
/**
* 单个orderItem的配送类型 3:无需快递
*/
private Integer deliveryType;
/**
* 加入购物车时间
*/
private Date shopCartTime;
/**
* 产品价格
*/
private Long price;
/**
* 商品总金额
*/
private Long spuTotalAmount;
public Long getOrderItemId() {
return orderItemId;
}
public void setOrderItemId(Long orderItemId) {
this.orderItemId = orderItemId;
}
public Long getShopId() {
return shopId;
}
public void setShopId(Long shopId) {
this.shopId = shopId;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getSpuId() {
return spuId;
}
public void setSpuId(Long spuId) {
this.spuId = spuId;
}
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getSpuName() {
return spuName;
}
public void setSpuName(String spuName) {
this.spuName = spuName;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public Date getShopCartTime() {
return shopCartTime;
}
public void setShopCartTime(Date shopCartTime) {
this.shopCartTime = shopCartTime;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Long getSpuTotalAmount() {
return spuTotalAmount;
}
public void setSpuTotalAmount(Long spuTotalAmount) {
this.spuTotalAmount = spuTotalAmount;
}
public Integer getDeliveryType() {
return deliveryType;
}
public void setDeliveryType(Integer deliveryType) {
this.deliveryType = deliveryType;
}
@Override
public String toString() {
return "OrderItem{" +
"orderItemId=" + orderItemId +
", shopId=" + shopId +
", orderId=" + orderId +
", spuId=" + spuId +
", skuId=" + skuId +
", userId=" + userId +
", count=" + count +
", spuName='" + spuName + '\'' +
", skuName='" + skuName + '\'' +
", pic='" + pic + '\'' +
", deliveryType=" + deliveryType +
", shopCartTime=" + shopCartTime +
", price=" + price +
", spuTotalAmount=" + spuTotalAmount +
'}';
}
}
package com.mall4j.cloud.order.model;
import java.io.Serializable;
import java.util.Date;
import com.mall4j.cloud.common.model.BaseModel;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public class OrderPayInfo extends BaseModel implements Serializable{
private static final long serialVersionUID = 1L;
/**
* 支付单号
*/
private Long payId;
/**
* 用户id
*/
private Long userId;
/**
* 外部订单流水号
*/
private String bizPayNo;
/**
* 系统类型 见SysTypeEnum
*/
private Integer sysType;
/**
* 支付状态
*/
private Integer payStatus;
/**
* 支付金额
*/
private Long payAmount;
/**
* 版本号
*/
private Integer version;
/**
* 回调内容
*/
private String callbackContent;
/**
* 回调时间
*/
private Date callbackTime;
/**
* 确认时间
*/
private Date confirmTime;
public Long getPayId() {
return payId;
}
public void setPayId(Long payId) {
this.payId = payId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getBizPayNo() {
return bizPayNo;
}
public void setBizPayNo(String bizPayNo) {
this.bizPayNo = bizPayNo;
}
public Integer getSysType() {
return sysType;
}
public void setSysType(Integer sysType) {
this.sysType = sysType;
}
public Integer getPayStatus() {
return payStatus;
}
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
public Long getPayAmount() {
return payAmount;
}
public void setPayAmount(Long payAmount) {
this.payAmount = payAmount;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public String getCallbackContent() {
return callbackContent;
}
public void setCallbackContent(String callbackContent) {
this.callbackContent = callbackContent;
}
public Date getCallbackTime() {
return callbackTime;
}
public void setCallbackTime(Date callbackTime) {
this.callbackTime = callbackTime;
}
public Date getConfirmTime() {
return confirmTime;
}
public void setConfirmTime(Date confirmTime) {
this.confirmTime = confirmTime;
}
@Override
public String toString() {
return "OrderPayInfo{" +
"payId=" + payId +
",createTime=" + createTime +
",updateTime=" + updateTime +
",userId=" + userId +
",bizPayNo=" + bizPayNo +
",sysType=" + sysType +
",payStatus=" + payStatus +
",payAmount=" + payAmount +
",version=" + version +
",callbackContent=" + callbackContent +
",callbackTime=" + callbackTime +
",confirmTime=" + confirmTime +
'}';
}
}
package com.mall4j.cloud.order.service;
import com.mall4j.cloud.common.database.dto.PageDTO;
import com.mall4j.cloud.common.database.vo.PageVO;
import com.mall4j.cloud.order.model.OrderAddr;
/**
* 用户订单配送地址
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
public interface OrderAddrService {
/**
* 分页获取用户订单配送地址列表
* @param pageDTO 分页参数
* @return 用户订单配送地址列表分页数据
*/
PageVO<OrderAddr> page(PageDTO pageDTO);
/**
* 根据用户订单配送地址id获取用户订单配送地址
*
* @param orderAddrId 用户订单配送地址id
* @return 用户订单配送地址
*/
OrderAddr getByOrderAddrId(Long orderAddrId);
/**
* 保存用户订单配送地址
* @param orderAddr 用户订单配送地址
*/
void save(OrderAddr orderAddr);
/**
* 更新用户订单配送地址
* @param orderAddr 用户订单配送地址
*/
void update(OrderAddr orderAddr);
/**
* 根据用户订单配送地址id删除用户订单配送地址
* @param orderAddrId
*/
void deleteById(Long orderAddrId);
}
package com.mall4j.cloud.order.service;
import com.mall4j.cloud.order.model.OrderItem;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 订单项
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public interface OrderItemService {
/**
* 保存订单项
*
* @param orderItem 订单项
*/
void save(OrderItem orderItem);
/**
* 更新订单项
*
* @param orderItem 订单项
*/
void update(OrderItem orderItem);
/**
* 根据订单项id删除订单项
*
* @param orderItemId
*/
void deleteById(Long orderItemId);
/**
* 根据订单号获取订单项
*
* @param orderId 订单id
* @return 订单项
*/
List<OrderItem> listOrderItemsByOrderId(Long orderId);
/**
* 批量保存订单项信息
*
* @param orderItems
*/
void saveBatch(List<OrderItem> orderItems);
/**
* 根据订单id获取商品名称
*
* @param orderIdList 订单id
* @return 商品名称列表
*/
List<String> getSpuNameListByOrderIds(long[] orderIdList);
/**
* 根据订单id获取订单项数量
* @param orderId
* @return
*/
Integer countByOrderId(@Param("orderId") Long orderId);
}
package com.mall4j.cloud.order.service;
import com.mall4j.cloud.order.model.OrderPayInfo;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public interface OrderPayInfoService {
/**
* 保存订单支付记录
* @param orderPayInfo 订单支付记录
*/
void save(OrderPayInfo orderPayInfo);
/**
* 更新订单支付记录
* @param orderPayInfo 订单支付记录
*/
void update(OrderPayInfo orderPayInfo);
/**
* 根据订单支付记录id删除订单支付记录
* @param payId
*/
void deleteById(Long payId);
}
package com.mall4j.cloud.order.service;
import com.mall4j.cloud.api.order.bo.EsOrderBO;
import com.mall4j.cloud.api.order.bo.OrderSimpleAmountInfoBO;
import com.mall4j.cloud.api.order.bo.OrderStatusBO;
import com.mall4j.cloud.api.order.dto.DeliveryOrderDTO;
import com.mall4j.cloud.api.order.vo.OrderAmountVO;
import com.mall4j.cloud.common.order.vo.ShopCartOrderMergerVO;
import com.mall4j.cloud.order.bo.SubmitOrderPayAmountInfoBO;
import com.mall4j.cloud.order.model.Order;
import com.mall4j.cloud.order.vo.OrderCountVO;
import com.mall4j.cloud.order.vo.OrderVO;
import java.util.List;
/**
* 订单信息
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
public interface OrderService {
/**
* 更新订单信息
* @param order 订单信息
*/
void update(Order order);
/**
* 根据订单信息id删除订单信息
* @param orderId
*/
void deleteById(Long orderId);
/**
* 提交订单
* @param userId
* @param mergerOrder
* @return
*/
List<Long> submit(Long userId, ShopCartOrderMergerVO mergerOrder);
/**
* 查询订单状态
* @param orderIds 多个订单的订单id
* @return 订单状态列表
*/
List<OrderStatusBO> getOrdersStatus(List<Long> orderIds);
/**
* 计算订单实际金额
* @param orderIds 多个订单的订单id
* @return 订单实际金额总和
*/
OrderAmountVO getOrdersActualAmount(List<Long> orderIds);
/**
* 将订单改为已支付状态
* @param orderIds 订单ids
*/
void updateByToPaySuccess(List<Long> orderIds);
/**
* 获取订单中的金额信息,不包含退款
* @param orderIds 多个订单的订单id
* @return 订单商家id列表
*/
List<OrderSimpleAmountInfoBO> getOrdersSimpleAmountInfo(List<Long> orderIds);
/**
* 取消订单
* @param orderId 订单id
*/
void cancelOrderAndGetCancelOrderIds(List<Long> orderId);
/**
* 根据订单号和用户id获取订单
* @param orderId orderId
* @param userId userId
* @return Order
*/
Order getOrderByOrderIdAndUserId(Long orderId, Long userId);
/**
* 根据订单号和店铺id获取订单
* @param orderId orderId
* @return Order
*/
OrderVO getOrderByOrderId(Long orderId);
/**
* 更新订单
* @param orderId 订单号
* @return
*/
int receiptOrder(Long orderId);
/**
* 根据订单号删除订单
* @param orderId 订单号
*/
void deleteOrder(Long orderId);
/**
* 订单物流发货
* @param deliveryOrderParam 发货参数
*/
void delivery(DeliveryOrderDTO deliveryOrderParam);
/**
* 根据订单id列表获取订单金额信息
* @param orderIdList 订单id列表
* @return
*/
SubmitOrderPayAmountInfoBO getSubmitOrderPayAmountInfo(long[] orderIdList);
/**
* 获取订单需要保存到es中的数据
* @param orderId 订单id
* @return
*/
EsOrderBO getEsOrder(Long orderId);
/**
* 获取订单和订单项信息
* @param orderId 订单id
* @param shopId 店铺id
* @return
*/
Order getOrderAndOrderItemData(Long orderId,Long shopId);
/**
* 计算每个订单状态的状态数量
* @param userId 用户id
* @return
*/
OrderCountVO countNumberOfStatus(Long userId);
}
package com.mall4j.cloud.order.service.impl;
import com.mall4j.cloud.common.database.dto.PageDTO;
import com.mall4j.cloud.common.database.util.PageUtil;
import com.mall4j.cloud.common.database.vo.PageVO;
import com.mall4j.cloud.order.mapper.OrderAddrMapper;
import com.mall4j.cloud.order.model.OrderAddr;
import com.mall4j.cloud.order.service.OrderAddrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 用户订单配送地址
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
@Service
public class OrderAddrServiceImpl implements OrderAddrService {
@Autowired
private OrderAddrMapper orderAddrMapper;
@Override
public PageVO<OrderAddr> page(PageDTO pageDTO) {
return PageUtil.doPage(pageDTO, () -> orderAddrMapper.list());
}
@Override
public OrderAddr getByOrderAddrId(Long orderAddrId) {
return orderAddrMapper.getByOrderAddrId(orderAddrId);
}
@Override
public void save(OrderAddr orderAddr) {
orderAddrMapper.save(orderAddr);
}
@Override
public void update(OrderAddr orderAddr) {
orderAddrMapper.update(orderAddr);
}
@Override
public void deleteById(Long orderAddrId) {
orderAddrMapper.deleteById(orderAddrId);
}
}
package com.mall4j.cloud.order.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.mall4j.cloud.order.model.OrderItem;
import com.mall4j.cloud.order.mapper.OrderItemMapper;
import com.mall4j.cloud.order.service.OrderItemService;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
/**
* 订单项
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
@Service
public class OrderItemServiceImpl implements OrderItemService {
@Autowired
private OrderItemMapper orderItemMapper;
@Override
public void save(OrderItem orderItem) {
orderItemMapper.save(orderItem);
}
@Override
public void update(OrderItem orderItem) {
orderItemMapper.update(orderItem);
}
@Override
public void deleteById(Long orderItemId) {
orderItemMapper.deleteById(orderItemId);
}
@Override
public List<OrderItem> listOrderItemsByOrderId(Long orderId) {
return orderItemMapper.listOrderItemsByOrderId(orderId);
}
@Override
public void saveBatch(List<OrderItem> orderItems) {
if (CollUtil.isEmpty(orderItems)) {
return;
}
orderItemMapper.saveBatch(orderItems);
}
@Override
public List<String> getSpuNameListByOrderIds(long[] orderIdList) {
return orderItemMapper.getSpuNameListByOrderIds(orderIdList);
}
@Override
public Integer countByOrderId(Long orderId) {
return orderItemMapper.countByOrderId(orderId);
}
}
package com.mall4j.cloud.order.service.impl;
import com.mall4j.cloud.order.model.OrderPayInfo;
import com.mall4j.cloud.order.mapper.OrderPayInfoMapper;
import com.mall4j.cloud.order.service.OrderPayInfoService;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
/**
* 订单支付记录
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
@Service
public class OrderPayInfoServiceImpl implements OrderPayInfoService {
@Autowired
private OrderPayInfoMapper orderPayInfoMapper;
@Override
public void save(OrderPayInfo orderPayInfo) {
orderPayInfoMapper.save(orderPayInfo);
}
@Override
public void update(OrderPayInfo orderPayInfo) {
orderPayInfoMapper.update(orderPayInfo);
}
@Override
public void deleteById(Long payId) {
orderPayInfoMapper.deleteById(payId);
}
}
package com.mall4j.cloud.order.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.mall4j.cloud.api.leaf.feign.SegmentFeignClient;
import com.mall4j.cloud.api.order.bo.EsOrderBO;
import com.mall4j.cloud.api.order.bo.OrderSimpleAmountInfoBO;
import com.mall4j.cloud.api.order.bo.OrderStatusBO;
import com.mall4j.cloud.api.order.constant.DeliveryType;
import com.mall4j.cloud.api.order.constant.OrderStatus;
import com.mall4j.cloud.api.order.dto.DeliveryOrderDTO;
import com.mall4j.cloud.api.order.vo.OrderAmountVO;
import com.mall4j.cloud.api.product.dto.SkuStockLockDTO;
import com.mall4j.cloud.api.product.feign.ShopCartFeignClient;
import com.mall4j.cloud.api.product.feign.SkuStockLockFeignClient;
import com.mall4j.cloud.common.exception.Mall4cloudException;
import com.mall4j.cloud.common.order.vo.ShopCartItemVO;
import com.mall4j.cloud.common.order.vo.ShopCartOrderMergerVO;
import com.mall4j.cloud.common.order.vo.ShopCartOrderVO;
import com.mall4j.cloud.common.response.ResponseEnum;
import com.mall4j.cloud.common.response.ServerResponseEntity;
import com.mall4j.cloud.common.rocketmq.config.RocketMqConstant;
import com.mall4j.cloud.common.security.AuthUserContext;
import com.mall4j.cloud.order.bo.SubmitOrderPayAmountInfoBO;
import com.mall4j.cloud.order.mapper.OrderMapper;
import com.mall4j.cloud.order.model.Order;
import com.mall4j.cloud.order.model.OrderAddr;
import com.mall4j.cloud.order.model.OrderItem;
import com.mall4j.cloud.order.service.OrderAddrService;
import com.mall4j.cloud.order.service.OrderItemService;
import com.mall4j.cloud.order.service.OrderService;
import com.mall4j.cloud.order.vo.OrderCountVO;
import com.mall4j.cloud.order.vo.OrderVO;
import io.seata.spring.annotation.GlobalTransactional;
import com.mall4j.cloud.common.util.BeanUtil;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.support.GenericMessage;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* 订单信息
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
@Service
public class OrderServiceImpl implements OrderService {
private static final Logger log = LoggerFactory.getLogger(OrderServiceImpl.class);
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderItemService orderItemService;
@Autowired
private SegmentFeignClient segmentFeignClient;
@Autowired
private SkuStockLockFeignClient skuStockLockFeignClient;
@Autowired
private ShopCartFeignClient shopCartFeignClient;
@Autowired
private RocketMQTemplate stockMqTemplate;
@Autowired
private RocketMQTemplate orderCancelTemplate;
@Autowired
private OrderAddrService orderAddrService;
@Override
public void update(Order order) {
orderMapper.update(order);
}
@Override
public void deleteById(Long orderId) {
orderMapper.deleteById(orderId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public List<Long> submit(Long userId, ShopCartOrderMergerVO mergerOrder) {
List<Order> orders = saveOrder(userId, mergerOrder);
List<Long> orderIds = new ArrayList<>();
List<SkuStockLockDTO> skuStockLocks = new ArrayList<>();
for (Order order : orders) {
orderIds.add(order.getOrderId());
List<OrderItem> orderItems = order.getOrderItems();
for (OrderItem orderItem : orderItems) {
skuStockLocks.add(new SkuStockLockDTO(orderItem.getSpuId(), orderItem.getSkuId(), orderItem.getOrderId(), orderItem.getCount()));
}
}
// 锁定库存
ServerResponseEntity<Void> lockStockResponse = skuStockLockFeignClient.lock(skuStockLocks);
// 锁定不成,抛异常,让回滚订单
if (!lockStockResponse.isSuccess()) {
throw new Mall4cloudException(lockStockResponse.getMsg());
}
// 发送消息,如果三十分钟后没有支付,则取消订单
SendStatus sendStatus = orderCancelTemplate.syncSend(RocketMqConstant.ORDER_CANCEL_TOPIC, new GenericMessage<>(orderIds), RocketMqConstant.TIMEOUT, RocketMqConstant.CANCEL_ORDER_DELAY_LEVEL).getSendStatus();
if (!Objects.equals(sendStatus,SendStatus.SEND_OK)) {
// 消息发不出去就抛异常,发的出去无所谓
throw new Mall4cloudException(ResponseEnum.EXCEPTION);
}
return orderIds;
}
@Override
public List<OrderStatusBO> getOrdersStatus(List<Long> orderIds) {
List<OrderStatusBO> orderStatusList = orderMapper.getOrdersStatus(orderIds);
for (Long orderId : orderIds) {
boolean hasOrderId = false;
for (OrderStatusBO orderStatusBO : orderStatusList) {
if (Objects.equals(orderStatusBO.getOrderId(), orderId)) {
hasOrderId = true;
}
}
if (!hasOrderId) {
OrderStatusBO orderStatusBO = new OrderStatusBO();
orderStatusBO.setOrderId(orderId);
orderStatusList.add(orderStatusBO);
}
}
return orderStatusList;
}
@Override
public OrderAmountVO getOrdersActualAmount(List<Long> orderIds) {
return orderMapper.getOrdersActualAmount(orderIds);
}
@Override
public void updateByToPaySuccess(List<Long> orderIds) {
orderMapper.updateByToPaySuccess(orderIds);
}
@Override
public List<OrderSimpleAmountInfoBO> getOrdersSimpleAmountInfo(List<Long> orderIds) {
return orderMapper.getOrdersSimpleAmountInfo(orderIds);
}
/**
* 取消订单和mq日志要同时落地,所以用分布式事务
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelOrderAndGetCancelOrderIds(List<Long> orderIds) {
List<OrderStatusBO> ordersStatus = orderMapper.getOrdersStatus(orderIds);
List<Long> cancelOrderIds = new ArrayList<>();
for (OrderStatusBO orderStatusBO : ordersStatus) {
if (orderStatusBO.getStatus() != null || !Objects.equals(orderStatusBO.getStatus(), OrderStatus.CLOSE.value())) {
cancelOrderIds.add(orderStatusBO.getOrderId());
}
}
if (CollectionUtil.isEmpty(cancelOrderIds)) {
return;
}
orderMapper.cancelOrders(cancelOrderIds);
// 解锁库存状态
SendStatus stockSendStatus = stockMqTemplate.syncSend(RocketMqConstant.STOCK_UNLOCK_TOPIC, new GenericMessage<>(orderIds)).getSendStatus();
if (!Objects.equals(stockSendStatus,SendStatus.SEND_OK)) {
// 消息发不出去就抛异常,发的出去无所谓
throw new Mall4cloudException(ResponseEnum.EXCEPTION);
}
}
@Override
public Order getOrderByOrderIdAndUserId(Long orderId, Long userId) {
Order order = orderMapper.getOrderByOrderIdAndUserId(orderId, userId);
if (order == null) {
// 订单不存在
throw new Mall4cloudException(ResponseEnum.ORDER_NOT_EXIST);
}
return order;
}
@Override
public OrderVO getOrderByOrderId(Long orderId) {
Order order = orderMapper.getOrderByOrderIdAndShopId(orderId, AuthUserContext.get().getTenantId());
if (order == null) {
// 订单不存在
throw new Mall4cloudException(ResponseEnum.ORDER_NOT_EXIST);
}
return BeanUtil.map(order, OrderVO.class);
}
/**
* 确认收货订单
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int receiptOrder(Long orderId) {
return orderMapper.receiptOrder(orderId);
}
@Override
public void deleteOrder(Long orderId) {
orderMapper.deleteOrder(orderId);
}
@Override
@Transactional(rollbackFor = Exception.class)
@GlobalTransactional(rollbackFor = Exception.class)
public void delivery(DeliveryOrderDTO deliveryOrderParam) {
//修改为发货状态
Date date = new Date();
Order order = new Order();
order.setOrderId(deliveryOrderParam.getOrderId());
order.setStatus(OrderStatus.CONSIGNMENT.value());
order.setUpdateTime(date);
order.setDeliveryTime(date);
//无需物流
order.setDeliveryType(DeliveryType.NOT_DELIVERY.value());
orderMapper.update(order);
}
@Override
public SubmitOrderPayAmountInfoBO getSubmitOrderPayAmountInfo(long[] orderIdList) {
return orderMapper.getSubmitOrderPayAmountInfo(orderIdList);
}
@Override
public EsOrderBO getEsOrder(Long orderId) {
return orderMapper.getEsOrder(orderId);
}
public List<Order> saveOrder(Long userId, ShopCartOrderMergerVO mergerOrder) {
OrderAddr orderAddr = BeanUtil.map(mergerOrder.getUserAddr(), OrderAddr.class);
// 地址信息
if (Objects.isNull(orderAddr)) {
// 请填写收货地址
throw new Mall4cloudException("请填写收货地址");
}
// 保存收货地址
orderAddrService.save(orderAddr);
// 订单商品参数
List<ShopCartOrderVO> shopCartOrders = mergerOrder.getShopCartOrders();
List<Order> orders = new ArrayList<>();
List<OrderItem> orderItems = new ArrayList<>();
List<Long> shopCartItemIds = new ArrayList<>();
if(CollectionUtil.isNotEmpty(shopCartOrders)) {
// 每个店铺生成一个订单
for (ShopCartOrderVO shopCartOrderDto : shopCartOrders) {
Order order = getOrder(userId, mergerOrder.getDvyType(), shopCartOrderDto);
for (ShopCartItemVO shopCartItemVO : shopCartOrderDto.getShopCartItemVO()) {
OrderItem orderItem = getOrderItem(order, shopCartItemVO);
orderItems.add(orderItem);
shopCartItemIds.add(shopCartItemVO.getCartItemId());
}
order.setOrderItems(orderItems);
order.setOrderAddrId(orderAddr.getOrderAddrId());
orders.add(order);
}
}
orderMapper.saveBatch(orders);
orderItemService.saveBatch(orderItems);
// 清空购物车
shopCartFeignClient.deleteItem(shopCartItemIds);
return orders;
}
private OrderItem getOrderItem(Order order, ShopCartItemVO shopCartItem) {
OrderItem orderItem = new OrderItem();
orderItem.setOrderId(order.getOrderId());
orderItem.setShopId(shopCartItem.getShopId());
orderItem.setSkuId(shopCartItem.getSkuId());
orderItem.setSpuId(shopCartItem.getSpuId());
orderItem.setSkuName(shopCartItem.getSkuName());
orderItem.setCount(shopCartItem.getCount());
orderItem.setSpuName(shopCartItem.getSpuName());
orderItem.setPic(shopCartItem.getImgUrl());
orderItem.setPrice(shopCartItem.getSkuPriceFee());
orderItem.setUserId(order.getUserId());
orderItem.setSpuTotalAmount(shopCartItem.getTotalAmount());
orderItem.setShopCartTime(shopCartItem.getCreateTime());
// 订单项支付金额
orderItem.setSpuTotalAmount(shopCartItem.getTotalAmount());
return orderItem;
}
private Order getOrder(Long userId, Integer dvyType, ShopCartOrderVO shopCartOrderDto) {
ServerResponseEntity<Long> segmentIdResponse = segmentFeignClient.getSegmentId(Order.DISTRIBUTED_ID_KEY);
if (!segmentIdResponse.isSuccess()) {
throw new Mall4cloudException("获取订单id失败");
}
// 订单信息
Order order = new Order();
order.setOrderId(segmentIdResponse.getData());
order.setShopId(shopCartOrderDto.getShopId());
order.setShopName(shopCartOrderDto.getShopName());
// 用户id
order.setUserId(userId);
// 商品总额
order.setTotal(shopCartOrderDto.getTotal());
order.setStatus(OrderStatus.UNPAY.value());
order.setIsPayed(0);
order.setDeleteStatus(0);
order.setAllCount(shopCartOrderDto.getTotalCount());
order.setDeliveryType(DeliveryType.NOT_DELIVERY.value());
return order;
}
@Override
public Order getOrderAndOrderItemData(Long orderId, Long shopId) {
return orderMapper.getOrderAndOrderItemData(orderId, shopId);
}
@Override
public OrderCountVO countNumberOfStatus(Long userId) {
return orderMapper.countNumberOfStatus(userId);
}
}
package com.mall4j.cloud.order.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mall4j.cloud.common.serializer.ImgJsonSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
/**
* @author FrozenWatermelon
*/
@Schema(description = "我的订单-订单项")
public class MyOrderItemVO {
@Schema(description = "商品图片" , requiredMode = Schema.RequiredMode.REQUIRED)
@JsonSerialize(using = ImgJsonSerializer.class)
private String pic;
@Schema(description = "商品名称" , requiredMode = Schema.RequiredMode.REQUIRED)
private String spuName;
@Schema(description = "订单号" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderId;
@Schema(description = "商品数量" , requiredMode = Schema.RequiredMode.REQUIRED)
private Integer count;
@Schema(description = "商品价格" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long price;
@Schema(description = "skuId" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long skuId;
@Schema(description = "skuName" , requiredMode = Schema.RequiredMode.REQUIRED)
private String skuName;
@Schema(description = "订单项id" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderItemId;
@Schema(description = "商品id" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long spuId;
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public String getSpuName() {
return spuName;
}
public void setSpuName(String spuName) {
this.spuName = spuName;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public Long getOrderItemId() {
return orderItemId;
}
public void setOrderItemId(Long orderItemId) {
this.orderItemId = orderItemId;
}
public Long getSpuId() {
return spuId;
}
public void setSpuId(Long spuId) {
this.spuId = spuId;
}
@Override
public String toString() {
return "MyOrderItemVO{" +
"pic='" + pic + '\'' +
", spuName='" + spuName + '\'' +
", orderId=" + orderId +
", count=" + count +
", price=" + price +
", skuId=" + skuId +
", skuName='" + skuName + '\'' +
", orderItemId=" + orderItemId +
", spuId=" + spuId +
'}';
}
}
package com.mall4j.cloud.order.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import java.util.List;
/**
* 我的订单
*
* @author FrozenWatermelon
*/
@Schema(description = "我的订单")
public class MyOrderVO {
@Schema(description = "订单项" ,requiredMode = Schema.RequiredMode.REQUIRED)
private List<MyOrderItemVO> orderItems;
@Schema(description = "订单号" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Long orderId;
@Schema(description = "总价" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Long actualTotal;
@Schema(description = "订单状态" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Integer status;
@Schema(description = "配送类型 3:无需快递" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Integer deliveryType;
@Schema(description = "店铺名称" ,requiredMode = Schema.RequiredMode.REQUIRED)
private String shopName;
@Schema(description = "店铺id" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Long shopId;
@Schema(description = "订单创建时间" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Date createTime;
@Schema(description = "商品总数" ,requiredMode = Schema.RequiredMode.REQUIRED)
private Integer allCount;
public List<MyOrderItemVO> getOrderItems() {
return orderItems;
}
public void setOrderItems(List<MyOrderItemVO> orderItems) {
this.orderItems = orderItems;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getActualTotal() {
return actualTotal;
}
public void setActualTotal(Long actualTotal) {
this.actualTotal = actualTotal;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public Long getShopId() {
return shopId;
}
public void setShopId(Long shopId) {
this.shopId = shopId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Integer getDeliveryType() {
return deliveryType;
}
public void setDeliveryType(Integer deliveryType) {
this.deliveryType = deliveryType;
}
public Integer getAllCount() {
return allCount;
}
public void setAllCount(Integer allCount) {
this.allCount = allCount;
}
@Override
public String toString() {
return "MyOrderVO{" +
"orderItems=" + orderItems +
", orderId=" + orderId +
", actualTotal=" + actualTotal +
", status=" + status +
", deliveryType=" + deliveryType +
", shopName='" + shopName + '\'' +
", shopId=" + shopId +
", createTime=" + createTime +
", allCount=" + allCount +
'}';
}
}
package com.mall4j.cloud.order.vo;
import com.mall4j.cloud.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
/**
* 用户订单配送地址VO
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
public class OrderAddrVO extends BaseVO{
private static final long serialVersionUID = 1L;
@Schema(description = "ID" )
private Long orderAddrId;
@Schema(description = "用户ID" )
private Long userId;
@Schema(description = "收货人" )
private String consignee;
@Schema(description = "省ID" )
private Long provinceId;
@Schema(description = "省" )
private String province;
@Schema(description = "城市ID" )
private Long cityId;
@Schema(description = "城市" )
private String city;
@Schema(description = "区域ID" )
private Long areaId;
@Schema(description = "区" )
private String area;
@Schema(description = "地址" )
private String addr;
@Schema(description = "邮编" )
private String postCode;
@Schema(description = "手机" )
private String mobile;
public Long getOrderAddrId() {
return orderAddrId;
}
public void setOrderAddrId(Long orderAddrId) {
this.orderAddrId = orderAddrId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getConsignee() {
return consignee;
}
public void setConsignee(String consignee) {
this.consignee = consignee;
}
public Long getProvinceId() {
return provinceId;
}
public void setProvinceId(Long provinceId) {
this.provinceId = provinceId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public Long getCityId() {
return cityId;
}
public void setCityId(Long cityId) {
this.cityId = cityId;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Long getAreaId() {
return areaId;
}
public void setAreaId(Long areaId) {
this.areaId = areaId;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
@Override
public String toString() {
return "OrderAddrVO{" +
"orderAddrId=" + orderAddrId +
",createTime=" + createTime +
",updateTime=" + updateTime +
",userId=" + userId +
",consignee=" + consignee +
",provinceId=" + provinceId +
",province=" + province +
",cityId=" + cityId +
",city=" + city +
",areaId=" + areaId +
",area=" + area +
",addr=" + addr +
",postCode=" + postCode +
",mobile=" + mobile +
'}';
}
}
package com.mall4j.cloud.order.vo;
import io.swagger.v3.oas.annotations.media.Schema;
/**
* @author FrozenWatermelon
*/
@Schema(description = "我的订单数量")
public class OrderCountVO {
@Schema(description = "所有订单数量" )
private Integer allCount;
@Schema(description = "待付款" )
private Integer unPay;
@Schema(description = "待发货" )
private Integer payed;
@Schema(description = "待收货" )
private Integer consignment;
@Schema(description = "已完成" )
private Integer success;
public Integer getAllCount() {
return allCount;
}
public void setAllCount(Integer allCount) {
this.allCount = allCount;
}
public Integer getUnPay() {
return unPay;
}
public void setUnPay(Integer unPay) {
this.unPay = unPay;
}
public Integer getPayed() {
return payed;
}
public void setPayed(Integer payed) {
this.payed = payed;
}
public Integer getConsignment() {
return consignment;
}
public void setConsignment(Integer consignment) {
this.consignment = consignment;
}
public Integer getSuccess() {
return success;
}
public void setSuccess(Integer success) {
this.success = success;
}
@Override
public String toString() {
return "OrderCountVO{" +
"allCount=" + allCount +
", unPay=" + unPay +
", payed=" + payed +
", consignment=" + consignment +
", success=" + success +
'}';
}
}
package com.mall4j.cloud.order.vo;
import com.mall4j.cloud.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
/**
* 订单项VO
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public class OrderItemVO extends BaseVO{
private static final long serialVersionUID = 1L;
@Schema(description = "订单项ID" )
private Long orderItemId;
@Schema(description = "店铺id" )
private Long shopId;
@Schema(description = "订单id" )
private Long orderId;
@Schema(description = "产品ID" )
private Long spuId;
@Schema(description = "产品SkuID" )
private Long skuId;
@Schema(description = "用户Id" )
private Long userId;
@Schema(description = "购物车产品个数" )
private Integer count;
@Schema(description = "产品名称" )
private String spuName;
@Schema(description = "sku名称" )
private String skuName;
@Schema(description = "产品主图片路径" )
private String pic;
@Schema(description = "单个orderItem的配送类型 3:无需快递" )
private Integer deliveryType;
@Schema(description = "加入购物车时间" )
private Date shopCartTime;
@Schema(description = "产品价格" )
private Long price;
@Schema(description = "商品总金额" )
private Long spuTotalAmount;
@Schema(description = "发货改变的数量" )
private Integer changeNum;
public Long getOrderItemId() {
return orderItemId;
}
public void setOrderItemId(Long orderItemId) {
this.orderItemId = orderItemId;
}
public Long getShopId() {
return shopId;
}
public void setShopId(Long shopId) {
this.shopId = shopId;
}
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getSpuId() {
return spuId;
}
public void setSpuId(Long spuId) {
this.spuId = spuId;
}
public Long getSkuId() {
return skuId;
}
public void setSkuId(Long skuId) {
this.skuId = skuId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getSpuName() {
return spuName;
}
public void setSpuName(String spuName) {
this.spuName = spuName;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public String getPic() {
return pic;
}
public void setPic(String pic) {
this.pic = pic;
}
public Date getShopCartTime() {
return shopCartTime;
}
public void setShopCartTime(Date shopCartTime) {
this.shopCartTime = shopCartTime;
}
public Long getPrice() {
return price;
}
public void setPrice(Long price) {
this.price = price;
}
public Long getSpuTotalAmount() {
return spuTotalAmount;
}
public void setSpuTotalAmount(Long spuTotalAmount) {
this.spuTotalAmount = spuTotalAmount;
}
public Integer getDeliveryType() {
return deliveryType;
}
public void setDeliveryType(Integer deliveryType) {
this.deliveryType = deliveryType;
}
public Integer getChangeNum() {
return changeNum;
}
public void setChangeNum(Integer changeNum) {
this.changeNum = changeNum;
}
@Override
public String toString() {
return "OrderItemVO{" +
"orderItemId=" + orderItemId +
", shopId=" + shopId +
", orderId=" + orderId +
", spuId=" + spuId +
", skuId=" + skuId +
", userId=" + userId +
", count=" + count +
", spuName='" + spuName + '\'' +
", skuName='" + skuName + '\'' +
", pic='" + pic + '\'' +
", deliveryType=" + deliveryType +
", shopCartTime=" + shopCartTime +
", price=" + price +
", spuTotalAmount=" + spuTotalAmount +
", changeNum=" + changeNum +
'}';
}
}
package com.mall4j.cloud.order.vo;
import com.mall4j.cloud.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
/**
* 订单支付记录VO
*
* @author FrozenWatermelon
* @date 2020-12-04 11:27:35
*/
public class OrderPayInfoVO extends BaseVO{
private static final long serialVersionUID = 1L;
@Schema(description = "支付单号" )
private Long payId;
@Schema(description = "用户id" )
private Long userId;
@Schema(description = "外部订单流水号" )
private String bizPayNo;
@Schema(description = "系统类型 见SysTypeEnum" )
private Integer sysType;
@Schema(description = "支付状态" )
private Integer payStatus;
@Schema(description = "支付金额" )
private Long payAmount;
@Schema(description = "版本号" )
private Integer version;
@Schema(description = "回调内容" )
private String callbackContent;
@Schema(description = "回调时间" )
private Date callbackTime;
@Schema(description = "确认时间" )
private Date confirmTime;
public Long getPayId() {
return payId;
}
public void setPayId(Long payId) {
this.payId = payId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getBizPayNo() {
return bizPayNo;
}
public void setBizPayNo(String bizPayNo) {
this.bizPayNo = bizPayNo;
}
public Integer getSysType() {
return sysType;
}
public void setSysType(Integer sysType) {
this.sysType = sysType;
}
public Integer getPayStatus() {
return payStatus;
}
public void setPayStatus(Integer payStatus) {
this.payStatus = payStatus;
}
public Long getPayAmount() {
return payAmount;
}
public void setPayAmount(Long payAmount) {
this.payAmount = payAmount;
}
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
public String getCallbackContent() {
return callbackContent;
}
public void setCallbackContent(String callbackContent) {
this.callbackContent = callbackContent;
}
public Date getCallbackTime() {
return callbackTime;
}
public void setCallbackTime(Date callbackTime) {
this.callbackTime = callbackTime;
}
public Date getConfirmTime() {
return confirmTime;
}
public void setConfirmTime(Date confirmTime) {
this.confirmTime = confirmTime;
}
@Override
public String toString() {
return "OrderPayInfoVO{" +
"payId=" + payId +
",createTime=" + createTime +
",updateTime=" + updateTime +
",userId=" + userId +
",bizPayNo=" + bizPayNo +
",sysType=" + sysType +
",payStatus=" + payStatus +
",payAmount=" + payAmount +
",version=" + version +
",callbackContent=" + callbackContent +
",callbackTime=" + callbackTime +
",confirmTime=" + confirmTime +
'}';
}
}
package com.mall4j.cloud.order.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 订单下的每个店铺
*
* @author FrozenWatermelon
*/
public class OrderShopVO implements Serializable {
@Schema(description = "店铺id" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long shopId;
@Schema(description = "店铺名称" , requiredMode = Schema.RequiredMode.REQUIRED)
private String shopName;
@Schema(description = "商品总值" , requiredMode = Schema.RequiredMode.REQUIRED)
private Long total;
@Schema(description = "商品总数" , requiredMode = Schema.RequiredMode.REQUIRED)
private Integer totalNum;
@Schema(description = "地址Dto" , requiredMode = Schema.RequiredMode.REQUIRED)
private OrderAddrVO orderAddr;
@Schema(description = "产品信息" , requiredMode = Schema.RequiredMode.REQUIRED)
private List<OrderItemVO> orderItems;
@Schema(description = "订单创建时间" , requiredMode = Schema.RequiredMode.REQUIRED)
private Date createTime;
@Schema(description = "订单付款时间")
private Date payTime;
@Schema(description = "订单发货时间")
private Date deliveryTime;
@Schema(description = "订单完成时间")
private Date finallyTime;
@Schema(description = "订单取消时间")
private Date cancelTime;
@Schema(description = "订单更新时间")
private Date updateTime;
@Schema(description = "配送类型 3:无需快递" , requiredMode = Schema.RequiredMode.REQUIRED)
private Integer deliveryType;
@Schema(description = "订单状态" , requiredMode = Schema.RequiredMode.REQUIRED)
private Integer status;
public Long getShopId() {
return shopId;
}
public void setShopId(Long shopId) {
this.shopId = shopId;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getTotalNum() {
return totalNum;
}
public void setTotalNum(Integer totalNum) {
this.totalNum = totalNum;
}
public List<OrderItemVO> getOrderItems() {
return orderItems;
}
public void setOrderItems(List<OrderItemVO> orderItems) {
this.orderItems = orderItems;
}
public OrderAddrVO getOrderAddr() {
return orderAddr;
}
public void setOrderAddr(OrderAddrVO orderAddr) {
this.orderAddr = orderAddr;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Date getFinallyTime() {
return finallyTime;
}
public void setFinallyTime(Date finallyTime) {
this.finallyTime = finallyTime;
}
public Date getCancelTime() {
return cancelTime;
}
public void setCancelTime(Date cancelTime) {
this.cancelTime = cancelTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public Integer getDeliveryType() {
return deliveryType;
}
public void setDeliveryType(Integer deliveryType) {
this.deliveryType = deliveryType;
}
@Override
public String toString() {
return "OrderShopVO{" +
"shopId=" + shopId +
", shopName='" + shopName + '\'' +
", total=" + total +
", totalNum=" + totalNum +
", orderAddr=" + orderAddr +
", orderItems=" + orderItems +
", createTime=" + createTime +
", payTime=" + payTime +
", deliveryTime=" + deliveryTime +
", finallyTime=" + finallyTime +
", cancelTime=" + cancelTime +
", updateTime=" + updateTime +
", deliveryType=" + deliveryType +
", status=" + status +
'}';
}
}
package com.mall4j.cloud.order.vo;
import com.mall4j.cloud.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import java.util.List;
/**
* 订单信息
*
* @author FrozenWatermelon
* @date 2020-12-05 14:13:50
*/
public class OrderVO extends BaseVO {
@Schema(description = "订单ID" )
private Long orderId;
@Schema(description = "店铺id" )
private Long shopId;
@Schema(description = "用户ID" )
private Long userId;
@Schema(description = "店铺名称" )
private String shopName;
@Schema(description = "总值" )
private Long total;
@Schema(description = "订单状态 1:待付款 2:待发货 3:待收货(已发货) 5:成功 6:失败" )
private Integer status;
@Schema(description = "配送类型 3:无需快递" )
private Integer deliveryType;
@Schema(description = "订单关闭原因 1-超时未支付 4-买家取消 15-已通过货到付款交易" )
private Integer closeType;
@Schema(description = "订单商品总数" )
private Integer allCount;
@Schema(description = "付款时间" )
private Date payTime;
@Schema(description = "发货时间" )
private Date deliveryTime;
@Schema(description = "完成时间" )
private Date finallyTime;
@Schema(description = "取消时间" )
private Date cancelTime;
@Schema(description = "是否已支付,1.已支付0.未支付" )
private Integer isPayed;
@Schema(description = "用户订单删除状态,0:没有删除, 1:回收站, 2:永久删除" )
private Integer deleteStatus;
@Schema(description = "订单项" )
private List<OrderItemVO> orderItems;
@Schema(description = "订单地址" )
private OrderAddrVO orderAddr;
public Long getOrderId() {
return orderId;
}
public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getShopId() {
return shopId;
}
public void setShopId(Long shopId) {
this.shopId = shopId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getDeliveryType() {
return deliveryType;
}
public void setDeliveryType(Integer deliveryType) {
this.deliveryType = deliveryType;
}
public Integer getCloseType() {
return closeType;
}
public void setCloseType(Integer closeType) {
this.closeType = closeType;
}
public Integer getAllCount() {
return allCount;
}
public void setAllCount(Integer allCount) {
this.allCount = allCount;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public Date getDeliveryTime() {
return deliveryTime;
}
public void setDeliveryTime(Date deliveryTime) {
this.deliveryTime = deliveryTime;
}
public Date getFinallyTime() {
return finallyTime;
}
public void setFinallyTime(Date finallyTime) {
this.finallyTime = finallyTime;
}
public Date getCancelTime() {
return cancelTime;
}
public void setCancelTime(Date cancelTime) {
this.cancelTime = cancelTime;
}
public Integer getIsPayed() {
return isPayed;
}
public void setIsPayed(Integer isPayed) {
this.isPayed = isPayed;
}
public Integer getDeleteStatus() {
return deleteStatus;
}
public void setDeleteStatus(Integer deleteStatus) {
this.deleteStatus = deleteStatus;
}
public List<OrderItemVO> getOrderItems() {
return orderItems;
}
public void setOrderItems(List<OrderItemVO> orderItems) {
this.orderItems = orderItems;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public OrderAddrVO getOrderAddr() {
return orderAddr;
}
public void setOrderAddr(OrderAddrVO orderAddr) {
this.orderAddr = orderAddr;
}
@Override
public String toString() {
return "OrderVO{" +
"orderId=" + orderId +
", shopId=" + shopId +
", userId=" + userId +
", shopName='" + shopName + '\'' +
", total=" + total +
", status=" + status +
", deliveryType=" + deliveryType +
", closeType=" + closeType +
", allCount=" + allCount +
", payTime=" + payTime +
", deliveryTime=" + deliveryTime +
", finallyTime=" + finallyTime +
", cancelTime=" + cancelTime +
", isPayed=" + isPayed +
", deleteStatus=" + deleteStatus +
", orderItems=" + orderItems +
", orderAddr=" + orderAddr +
'}';
}
}
package com.mall4j.cloud.order.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.Date;
import java.util.List;
/**
* 提交订单的支付信息
* @author FrozenWatermelon
* @date 2021/2/4
*/
public class SubmitOrderPayInfoVO {
@Schema(description = "商品名称" )
private List<String> spuNameList;
@Schema(description = "收货人姓名" )
private String consignee;
@Schema(description = "收货地址" )
private String userAddr;
@Schema(description = "收货人手机号" )
private String mobile;
@Schema(description = "订单过期时间" )
private Date endTime;
@Schema(description = "总共需要支付金额" )
private Long totalFee;
public String getConsignee() {
return consignee;
}
public void setConsignee(String consignee) {
this.consignee = consignee;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Long getTotalFee() {
return totalFee;
}
public void setTotalFee(Long totalFee) {
this.totalFee = totalFee;
}
public List<String> getSpuNameList() {
return spuNameList;
}
public void setSpuNameList(List<String> spuNameList) {
this.spuNameList = spuNameList;
}
public String getUserAddr() {
return userAddr;
}
public void setUserAddr(String userAddr) {
this.userAddr = userAddr;
}
@Override
public String toString() {
return "SubmitOrderPayInfoVO{" +
"spuNameList=" + spuNameList +
", consignee='" + consignee + '\'' +
", userAddr='" + userAddr + '\'' +
", mobile='" + mobile + '\'' +
", endTime=" + endTime +
", totalFee=" + totalFee +
'}';
}
}
server:
port: 9106
spring:
application:
name: @artifactId@
cloud:
nacos:
discovery:
server-addr: ${NACOS_HOST:192.168.1.46}:${NACOS_PORT:8848}
username: nacos
password: nacos
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
file-extension: yml
namespace: @nacos.namespace@
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
username: ${spring.cloud.nacos.discovery.username}
password: ${spring.cloud.nacos.discovery.password}
profiles:
active: @profiles.active@
mall4cloud:
job:
executor:
# job的端口,比自己的端口小100,就不会冲突咯
appname: @artifactId@
port: 9006
logpath:
logretentiondays: 30
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment