diff --git a/order/order-service-api/pom.xml b/order/order-service-api/pom.xml
index 239cd3496..25a2d6266 100644
--- a/order/order-service-api/pom.xml
+++ b/order/order-service-api/pom.xml
@@ -16,5 +16,11 @@
javax.validation
validation-api
+
+ cn.iocoder.mall
+ common-framework
+ 1.0-SNAPSHOT
+ compile
+
\ No newline at end of file
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java
index adb385add..bb390dc75 100644
--- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/OrderService.java
@@ -1,9 +1,11 @@
package cn.iocoder.mall.order.api;
+import cn.iocoder.common.framework.vo.CommonResult;
import cn.iocoder.mall.order.api.bo.OrderBO;
import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
-import cn.iocoder.mall.order.api.dto.OrderReceiverInformationDTO;
-import cn.iocoder.mall.order.api.dto.OrderUpdateDTO;
+import cn.iocoder.mall.order.api.dto.OrderItemDeletedDTO;
+import cn.iocoder.mall.order.api.dto.OrderLogisticsDTO;
+import cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO;
/**
* 订单 service
@@ -14,19 +16,28 @@ import cn.iocoder.mall.order.api.dto.OrderUpdateDTO;
public interface OrderService {
/**
- * 订单创建
+ * 订单 - 创建
*
* @param orderCreateDTO
* @return
*/
- OrderBO createOrder(OrderCreateDTO orderCreateDTO);
+ CommonResult createOrder(OrderCreateDTO orderCreateDTO);
/**
- * 订单更新
+ * 订单item - 更新
+ *
+ * @param orderItemUpdateDTO
*
- * @param orderUpdateDTO
*/
- void updateOrder(OrderUpdateDTO orderUpdateDTO);
+ CommonResult updateOrderItem(OrderItemUpdateDTO orderItemUpdateDTO);
+
+ /**
+ * 订单item - 删除
+ *
+ * @param orderItemDeletedDTO
+ * @return
+ */
+ CommonResult deleteOrderItem(OrderItemDeletedDTO orderItemDeletedDTO);
/**
* 更新订单 - 收件这信息
@@ -37,33 +48,33 @@ public interface OrderService {
* - 联系人电话
* - 联系人姓名
*/
- void updateOrderReceiverInformation(OrderReceiverInformationDTO orderReceiverInfoDTO);
+ CommonResult updateLogistics(OrderLogisticsDTO orderLogisticsDTO);
/**
* 删除订单
*
* @param id
*/
- void deleteOrder(Integer id);
+ CommonResult deleteOrder(Integer id);
/**
* 监听支付动作
*
* mq 更新 payStatus
*/
- void listenerPayment();
+ CommonResult listenerPayment();
/**
* 监听确认收货
*
* mq 更新 status
*/
- void listenerConfirmGoods();
+ CommonResult listenerConfirmGoods();
/**
* 监听换货
*
* mq 更新 status
*/
- void listenerExchangeGoods();
+ CommonResult listenerExchangeGoods();
}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/bo/OrderBO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/bo/OrderBO.java
index 75a8d97c9..15a2d6a2f 100644
--- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/bo/OrderBO.java
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/bo/OrderBO.java
@@ -19,16 +19,16 @@ public class OrderBO implements Serializable {
*/
private String orderNo;
/**
- * 交易金额
+ * 订单金额
*/
- private Integer price;
+ private Integer money;
@Override
public String toString() {
return "OrderBO{" +
"id=" + id +
", orderNo='" + orderNo + '\'' +
- ", price=" + price +
+ ", money=" + money +
'}';
}
@@ -50,12 +50,12 @@ public class OrderBO implements Serializable {
return this;
}
- public Integer getPrice() {
- return price;
+ public Integer getMoney() {
+ return money;
}
- public OrderBO setPrice(Integer price) {
- this.price = price;
+ public OrderBO setMoney(Integer money) {
+ this.money = money;
return this;
}
}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/ErrorCodeInterval.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/ErrorCodeInterval.java
new file mode 100644
index 000000000..139ac7a02
--- /dev/null
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/ErrorCodeInterval.java
@@ -0,0 +1,17 @@
+package cn.iocoder.mall.order.api.constant;
+
+import cn.iocoder.common.framework.constant.ModuleErrorCodeInterval;
+
+/**
+ * 错误码区间
+ *
+ * 当前模块化区间:[1-000-001-000 ~ 1-000-002-000]
+ *
+ * @author Sin
+ * @time 2019-03-23 11:35
+ */
+public class ErrorCodeInterval extends ModuleErrorCodeInterval {
+
+ // OrderErrorCodeEnum 错误码区间 [1-000-001-000 ~ 1-000-001-100]
+
+}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java
new file mode 100644
index 000000000..36f60f6f0
--- /dev/null
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/constant/OrderErrorCodeEnum.java
@@ -0,0 +1,32 @@
+package cn.iocoder.mall.order.api.constant;
+
+/**
+ * 订单错误码
+ *
+ * 错误码区间 [1-000-001-000 ~ 1-000-002-000]
+ *
+ * @author Sin
+ * @time 2019-03-23 11:23
+ */
+public enum OrderErrorCodeEnum {
+
+ ORDER_ITEM_ONLY_ONE(1000001000, "订单Item只有一个"),
+ ;
+
+ private final int code;
+ private final String message;
+
+ OrderErrorCodeEnum(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderCreateItemDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderCreateItemDTO.java
index da9323dbd..06f1be11f 100644
--- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderCreateItemDTO.java
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderCreateItemDTO.java
@@ -13,7 +13,7 @@ public class OrderCreateItemDTO {
* 商品编号
*/
@NotNull
- private String skuId;
+ private Integer skuId;
/**
* 数量
*/
@@ -29,11 +29,11 @@ public class OrderCreateItemDTO {
'}';
}
- public String getSkuId() {
+ public Integer getSkuId() {
return skuId;
}
- public OrderCreateItemDTO setSkuId(String skuId) {
+ public OrderCreateItemDTO setSkuId(Integer skuId) {
this.skuId = skuId;
return this;
}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemDeletedDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemDeletedDTO.java
new file mode 100644
index 000000000..b1409cebb
--- /dev/null
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemDeletedDTO.java
@@ -0,0 +1,46 @@
+package cn.iocoder.mall.order.api.dto;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author Sin
+ * @time 2019-03-23 10:22
+ */
+public class OrderItemDeletedDTO implements Serializable {
+
+ /**
+ * 订单id
+ */
+ private Integer orderId;
+ /**
+ * 订单item id
+ */
+ private List orderItemIds;
+
+ @Override
+ public String toString() {
+ return "OrderItemDeletedDTO{" +
+ "orderId=" + orderId +
+ ", orderItemIds=" + orderItemIds +
+ '}';
+ }
+
+ public Integer getOrderId() {
+ return orderId;
+ }
+
+ public OrderItemDeletedDTO setOrderId(Integer orderId) {
+ this.orderId = orderId;
+ return this;
+ }
+
+ public List getOrderItemIds() {
+ return orderItemIds;
+ }
+
+ public OrderItemDeletedDTO setOrderItemIds(List orderItemIds) {
+ this.orderItemIds = orderItemIds;
+ return this;
+ }
+}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemUpdateDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemUpdateDTO.java
new file mode 100644
index 000000000..40480207f
--- /dev/null
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemUpdateDTO.java
@@ -0,0 +1,80 @@
+package cn.iocoder.mall.order.api.dto;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 订单更新
+ *
+ * @author Sin
+ * @time 2019-03-16 14:46
+ */
+public class OrderItemUpdateDTO implements Serializable {
+
+ /**
+ * 编号
+ */
+ @NotNull
+ private Integer id;
+ /**
+ * 商品编号
+ */
+ @NotNull
+ private Integer skuId;
+ /**
+ * 数量
+ */
+ @NotNull
+ private Integer quantity;
+ /**
+ * 金额(分)
+ */
+ @NotNull
+ private Integer price;
+
+ @Override
+ public String toString() {
+ return "OrderItemUpdateDTO{" +
+ "id=" + id +
+ ", skuId=" + skuId +
+ ", quantity=" + quantity +
+ ", price=" + price +
+ '}';
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public OrderItemUpdateDTO setId(Integer id) {
+ this.id = id;
+ return this;
+ }
+
+ public Integer getSkuId() {
+ return skuId;
+ }
+
+ public OrderItemUpdateDTO setSkuId(Integer skuId) {
+ this.skuId = skuId;
+ return this;
+ }
+
+ public Integer getQuantity() {
+ return quantity;
+ }
+
+ public OrderItemUpdateDTO setQuantity(Integer quantity) {
+ this.quantity = quantity;
+ return this;
+ }
+
+ public Integer getPrice() {
+ return price;
+ }
+
+ public OrderItemUpdateDTO setPrice(Integer price) {
+ this.price = price;
+ return this;
+ }
+}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderLogisticsDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderLogisticsDTO.java
new file mode 100644
index 000000000..cdc5b28f5
--- /dev/null
+++ b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderLogisticsDTO.java
@@ -0,0 +1,113 @@
+package cn.iocoder.mall.order.api.dto;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 订单收件人信息
+ *
+ * @author Sin
+ * @time 2019-03-17 20:22
+ */
+public class OrderLogisticsDTO implements Serializable {
+
+ /**
+ * 订单 id
+ */
+ private Integer id;
+ /**
+ * 收件区域编号
+ */
+ @NotNull
+ private String areaNo;
+ /**
+ * 收件人名称
+ */
+ @NotNull
+ private String name;
+ /**
+ * 收件手机号
+ */
+ @NotNull
+ @Size(max = 11, min = 11)
+ // TODO: 2019-03-17 Sin 此处需要添加 手机号校验,需要添加新的注解
+ private String mobile;
+ /**
+ * 收件详细地址
+ */
+ @NotNull
+ @Size(max = 250, min = 10, message = "收件地址应该在 10 ~ 250 个字符之间")
+ private String address;
+ /**
+ * 物流编号
+ */
+ @NotNull
+ private String logisticsNo;
+
+ @Override
+ public String toString() {
+ return "OrderLogisticsDTO{" +
+ "id=" + id +
+ ", areaNo='" + areaNo + '\'' +
+ ", name='" + name + '\'' +
+ ", mobile='" + mobile + '\'' +
+ ", address='" + address + '\'' +
+ ", logisticsNo='" + logisticsNo + '\'' +
+ '}';
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public OrderLogisticsDTO setId(Integer id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getAreaNo() {
+ return areaNo;
+ }
+
+ public OrderLogisticsDTO setAreaNo(String areaNo) {
+ this.areaNo = areaNo;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public OrderLogisticsDTO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public OrderLogisticsDTO setMobile(String mobile) {
+ this.mobile = mobile;
+ return this;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public OrderLogisticsDTO setAddress(String address) {
+ this.address = address;
+ return this;
+ }
+
+ public String getLogisticsNo() {
+ return logisticsNo;
+ }
+
+ public OrderLogisticsDTO setLogisticsNo(String logisticsNo) {
+ this.logisticsNo = logisticsNo;
+ return this;
+ }
+}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderReceiverInformationDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderReceiverInformationDTO.java
deleted file mode 100644
index bcf5091a9..000000000
--- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderReceiverInformationDTO.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package cn.iocoder.mall.order.api.dto;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import java.io.Serializable;
-
-/**
- * 订单收件人信息
- *
- * @author Sin
- * @time 2019-03-17 20:22
- */
-public class OrderReceiverInformationDTO implements Serializable {
-
- /**
- * 订单 id
- */
- private Integer id;
- /**
- * 收件区域编号
- */
- @NotNull
- private String receiverAreaNo;
- /**
- * 收件人名称
- */
- @NotNull
- private String receiverName;
- /**
- * 收件手机号
- */
- @NotNull
- @Size(max = 11, min = 11)
- // TODO: 2019-03-17 Sin 此处需要添加 手机号校验,需要添加新的注解
- private String receiverMobile;
- /**
- * 收件详细地址
- */
- @NotNull
- @Size(max = 250, min = 10, message = "收件地址应该在 10 ~ 250 个字符之间")
- private String receiverAddress;
-
- @Override
- public String toString() {
- return "OrderReceiverInformationDTO{" +
- "id=" + id +
- ", receiverAreaNo='" + receiverAreaNo + '\'' +
- ", receiverName='" + receiverName + '\'' +
- ", receiverMobile='" + receiverMobile + '\'' +
- ", receiverAddress='" + receiverAddress + '\'' +
- '}';
- }
-
- public Integer getId() {
- return id;
- }
-
- public OrderReceiverInformationDTO setId(Integer id) {
- this.id = id;
- return this;
- }
-
- public String getReceiverAreaNo() {
- return receiverAreaNo;
- }
-
- public OrderReceiverInformationDTO setReceiverAreaNo(String receiverAreaNo) {
- this.receiverAreaNo = receiverAreaNo;
- return this;
- }
-
- public String getReceiverName() {
- return receiverName;
- }
-
- public OrderReceiverInformationDTO setReceiverName(String receiverName) {
- this.receiverName = receiverName;
- return this;
- }
-
- public String getReceiverMobile() {
- return receiverMobile;
- }
-
- public OrderReceiverInformationDTO setReceiverMobile(String receiverMobile) {
- this.receiverMobile = receiverMobile;
- return this;
- }
-
- public String getReceiverAddress() {
- return receiverAddress;
- }
-
- public OrderReceiverInformationDTO setReceiverAddress(String receiverAddress) {
- this.receiverAddress = receiverAddress;
- return this;
- }
-}
diff --git a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderUpdateDTO.java b/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderUpdateDTO.java
deleted file mode 100644
index 9ccf7a7ba..000000000
--- a/order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderUpdateDTO.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package cn.iocoder.mall.order.api.dto;
-
-import java.io.Serializable;
-
-/**
- * 订单更新
- *
- * @author Sin
- * @time 2019-03-16 14:46
- */
-public class OrderUpdateDTO implements Serializable {
-
-
-
-
-}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommon.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommon.java
new file mode 100644
index 000000000..9a732857f
--- /dev/null
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommon.java
@@ -0,0 +1,22 @@
+package cn.iocoder.mall.order;
+
+import cn.iocoder.mall.order.dataobject.OrderItemDO;
+
+import java.util.List;
+
+/**
+ * 订单常用
+ *
+ * @author Sin
+ * @time 2019-03-23 11:51
+ */
+public interface OrderCommon {
+
+ /**
+ * 计算订单金额
+ *
+ * @param items
+ * @return
+ */
+ Integer calculatedAmount(List items);
+}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommonImpl.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommonImpl.java
new file mode 100644
index 000000000..eeaac3c9d
--- /dev/null
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/OrderCommonImpl.java
@@ -0,0 +1,30 @@
+package cn.iocoder.mall.order;
+
+import cn.iocoder.mall.order.dataobject.OrderItemDO;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 订单常用
+ *
+ * @author Sin
+ * @time 2019-03-23 11:53
+ */
+@Component
+public class OrderCommonImpl implements OrderCommon {
+
+ @Override
+ public Integer calculatedAmount(List items) {
+ if (CollectionUtils.isEmpty(items)) {
+ return 0;
+ }
+ AtomicInteger totalAmount = new AtomicInteger(0);
+ items.forEach(orderItemDO -> {
+ totalAmount.addAndGet(orderItemDO.getPrice() * orderItemDO.getQuantity());
+ });
+ return totalAmount.get();
+ }
+}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/convert/OrderConvert.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/convert/OrderConvert.java
index 916a39dbc..d41c585a2 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/convert/OrderConvert.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/convert/OrderConvert.java
@@ -2,7 +2,8 @@ package cn.iocoder.mall.order.convert;
import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
import cn.iocoder.mall.order.api.dto.OrderCreateItemDTO;
-import cn.iocoder.mall.order.api.dto.OrderReceiverInformationDTO;
+import cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO;
+import cn.iocoder.mall.order.api.dto.OrderLogisticsDTO;
import cn.iocoder.mall.order.dataobject.OrderDO;
import cn.iocoder.mall.order.dataobject.OrderItemDO;
import cn.iocoder.mall.order.dataobject.OrderLogisticsDO;
@@ -24,7 +25,7 @@ public interface OrderConvert {
OrderConvert INSTANCE = Mappers.getMapper(OrderConvert.class);
/**
- * 转换 OrderDO - OrderCreateDTO
+ * 转换 OrderLogisticsDO - OrderCreateDTO
*
* @param orderCreateDTO
* @return
@@ -42,11 +43,20 @@ public interface OrderConvert {
List convert(List orderCreateItemDTOList);
/**
- * 转换 OrderDO - orderReceiverInformationDTO
+ * 转换 OrderLogisticsDO - orderReceiverInformationDTO
*
- * @param orderReceiverInformationDTO
+ * @param orderLogisticsDTO
* @return
*/
@Mappings({})
- OrderDO convert(OrderReceiverInformationDTO orderReceiverInformationDTO);
+ OrderLogisticsDO convert(OrderLogisticsDTO orderLogisticsDTO);
+
+ /**
+ * 转换 OrderItemDO - orderReceiverInformationDTO
+ *
+ * @param orderItemUpdateDTO
+ * @return
+ */
+ @Mappings({})
+ OrderItemDO convert(OrderItemUpdateDTO orderItemUpdateDTO);
}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java
index f53ac33b7..29bca50e3 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java
@@ -1,8 +1,12 @@
package cn.iocoder.mall.order.dao;
import cn.iocoder.mall.order.dataobject.OrderItemDO;
+import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
/**
* 订单 item mapper
*
@@ -18,4 +22,33 @@ public interface OrderItemMapper {
* @param orderItemDO
*/
void insert(OrderItemDO orderItemDO);
+
+ /**
+ * 更新 - 根据Id
+ *
+ * @param orderItemDO
+ */
+ void updateById(OrderItemDO orderItemDO);
+
+ /**
+ * 更新 - 根据Ids
+ *
+ * @param ids
+ * @param orderItemDO
+ */
+ void updateByIds(
+ @Param("ids") List ids,
+ OrderItemDO orderItemDO
+ );
+
+ /**
+ * 查询 - 根据 orderId 下的 item
+ *
+ * @param orderId
+ * @return
+ */
+ List selectByOrderIdAndDeleted(
+ @Param("orderId") Integer orderId,
+ @Param("deleted") @NotNull Integer deleted
+ );
}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderLogisticsMapper.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderLogisticsMapper.java
index dd1737824..12237e161 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderLogisticsMapper.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderLogisticsMapper.java
@@ -18,4 +18,11 @@ public interface OrderLogisticsMapper {
* @param orderLogisticsDO
*/
void insert(OrderLogisticsDO orderLogisticsDO);
+
+ /**
+ * 更新 - 根据id
+ *
+ * @param orderLogisticsDO
+ */
+ void updateById(OrderLogisticsDO orderLogisticsDO);
}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderDO.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderDO.java
index 3928738dd..9bf4e173f 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderDO.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderDO.java
@@ -27,7 +27,7 @@ public class OrderDO extends DeletableDO {
/**
* 交易金额
*/
- private Integer price;
+ private Integer money;
///
/// 时间信息
@@ -82,7 +82,7 @@ public class OrderDO extends DeletableDO {
"id=" + id +
", orderLogisticsId=" + orderLogisticsId +
", orderNo='" + orderNo + '\'' +
- ", price=" + price +
+ ", price=" + money +
", paymentTime=" + paymentTime +
", deliveryTime=" + deliveryTime +
", receiverTime=" + receiverTime +
@@ -120,12 +120,12 @@ public class OrderDO extends DeletableDO {
return this;
}
- public Integer getPrice() {
- return price;
+ public Integer getMoney() {
+ return money;
}
- public OrderDO setPrice(Integer price) {
- this.price = price;
+ public OrderDO setMoney(Integer money) {
+ this.money = money;
return this;
}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderItemDO.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderItemDO.java
index d39a97651..38a5e374f 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderItemDO.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/dataobject/OrderItemDO.java
@@ -27,7 +27,7 @@ public class OrderItemDO extends DeletableDO {
/**
* 商品编号
*/
- private String skuId;
+ private Integer skuId;
/**
* 数量
*/
@@ -125,11 +125,11 @@ public class OrderItemDO extends DeletableDO {
return this;
}
- public String getSkuId() {
+ public Integer getSkuId() {
return skuId;
}
- public OrderItemDO setSkuId(String skuId) {
+ public OrderItemDO setSkuId(Integer skuId) {
this.skuId = skuId;
return this;
}
diff --git a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/service/OrderServiceImpl.java b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/service/OrderServiceImpl.java
index 0df86cf79..95c4a826b 100644
--- a/order/order-service-impl/src/main/java/cn/iocoder/mall/order/service/OrderServiceImpl.java
+++ b/order/order-service-impl/src/main/java/cn/iocoder/mall/order/service/OrderServiceImpl.java
@@ -1,14 +1,15 @@
package cn.iocoder.mall.order.service;
-import cn.iocoder.common.framework.constant.DeleteStatusEnum;
+import cn.iocoder.common.framework.constant.DeletedStatusEnum;
+import cn.iocoder.common.framework.util.ServiceExceptionUtil;
+import cn.iocoder.common.framework.vo.CommonResult;
+import cn.iocoder.mall.order.OrderCommon;
import cn.iocoder.mall.order.api.OrderService;
import cn.iocoder.mall.order.api.bo.OrderBO;
+import cn.iocoder.mall.order.api.constant.OrderErrorCodeEnum;
import cn.iocoder.mall.order.api.constant.OrderHasReturnExchangeEnum;
import cn.iocoder.mall.order.api.constant.OrderStatusEnum;
-import cn.iocoder.mall.order.api.dto.OrderCreateDTO;
-import cn.iocoder.mall.order.api.dto.OrderCreateItemDTO;
-import cn.iocoder.mall.order.api.dto.OrderReceiverInformationDTO;
-import cn.iocoder.mall.order.api.dto.OrderUpdateDTO;
+import cn.iocoder.mall.order.api.dto.*;
import cn.iocoder.mall.order.convert.OrderConvert;
import cn.iocoder.mall.order.dao.OrderItemMapper;
import cn.iocoder.mall.order.dao.OrderLogisticsMapper;
@@ -19,12 +20,13 @@ import cn.iocoder.mall.order.dataobject.OrderLogisticsDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
/**
* 订单 service impl
@@ -42,10 +44,12 @@ public class OrderServiceImpl implements OrderService {
private OrderItemMapper orderItemMapper;
@Autowired
private OrderLogisticsMapper orderLogisticsMapper;
+ @Autowired
+ private OrderCommon orderCommon;
@Override
@Transactional
- public OrderBO createOrder(OrderCreateDTO orderCreateDTO) {
+ public CommonResult createOrder(OrderCreateDTO orderCreateDTO) {
List orderItemDTOList = orderCreateDTO.getOrderItems();
OrderLogisticsDO orderLogisticsDO = OrderConvert.INSTANCE.convert(orderCreateDTO);
List orderItemDOList = OrderConvert.INSTANCE.convert(orderItemDTOList);
@@ -61,10 +65,7 @@ public class OrderServiceImpl implements OrderService {
OrderDO orderDO = new OrderDO();
orderDO.setOrderLogisticsId(orderLogisticsDO.getId());
orderDO.setOrderNo(UUID.randomUUID().toString().replace("-", ""));
- orderDO.setPrice(-1); // 先设置一个默认值,金额在下面计算
- orderDO.setCreateTime(new Date());
- orderDO.setUpdateTime(null);
- orderDO.setDeleted(DeleteStatusEnum.DELETE_NO.getValue());
+ orderDO.setMoney(-1); // 先设置一个默认值,金额在下面计算
orderDO.setClosingTime(null);
orderDO.setDeliveryTime(null);
@@ -72,14 +73,15 @@ public class OrderServiceImpl implements OrderService {
orderDO.setStatus(OrderStatusEnum.WAIT_SHIPMENT.getValue());
orderDO.setHasReturnExchange(OrderHasReturnExchangeEnum.NO.getValue());
orderDO.setRemark(Optional.ofNullable(orderCreateDTO.getRemark()).orElse(""));
+
+ orderDO.setCreateTime(new Date());
+ orderDO.setUpdateTime(null);
+ orderDO.setDeleted(DeletedStatusEnum.DELETED_NO.getValue());
orderMapper.insert(orderDO);
// order item
- AtomicInteger totalPrice = new AtomicInteger();
orderItemDOList.forEach(orderItemDO -> {
int goodsPrice = 1000; // 商品单价
- int price = orderItemDO.getQuantity() * goodsPrice;
- totalPrice.addAndGet(price);
orderItemDO
.setOrderId(orderDO.getId())
.setOrderNo(orderDO.getOrderNo())
@@ -90,61 +92,102 @@ public class OrderServiceImpl implements OrderService {
.setClosingTime(null)
.setHasReturnExchange(OrderStatusEnum.WAITING_PAYMENT.getValue())
.setStatus(OrderStatusEnum.WAITING_PAYMENT.getValue())
- .setDeleted(DeleteStatusEnum.DELETE_NO.getValue())
+ .setDeleted(DeletedStatusEnum.DELETED_NO.getValue())
.setCreateTime(new Date())
- .setUpdateTime(new Date());
+ .setUpdateTime(null);
orderItemMapper.insert(orderItemDO);
});
// 更新订单金额
+ Integer totalAmount = orderCommon.calculatedAmount(orderItemDOList);
orderMapper.updateById(
new OrderDO()
.setId(orderDO.getId())
- .setPrice(totalPrice.get())
+ .setMoney(totalAmount)
);
// TODO: 2019-03-17 Sin 需要发送 创建成果 MQ 消息
- return new OrderBO()
- .setId(orderDO.getId())
- .setOrderNo(orderDO.getOrderNo())
- .setPrice(orderDO.getPrice());
- }
-
- @Override
- public void updateOrder(OrderUpdateDTO orderUpdateDTO) {
-
- }
-
- @Override
- public void updateOrderReceiverInformation(OrderReceiverInformationDTO orderReceiverInfoDTO) {
- // TODO: 2019-03-17 需要做校验 手机号
- OrderDO orderDO = OrderConvert.INSTANCE.convert(orderReceiverInfoDTO);
- orderMapper.updateById(orderDO);
- }
-
- @Override
- public void deleteOrder(Integer id) {
- // 删除订单操作,一般用于 用户端删除,是否存在检查可以过掉
- orderMapper.updateById((OrderDO) new OrderDO()
- .setId(id)
- .setDeleted(DeleteStatusEnum.DELETE_YES.getValue())
+ return CommonResult.success(
+ new OrderBO()
+ .setId(orderDO.getId())
+ .setOrderNo(orderDO.getOrderNo())
+ .setMoney(orderDO.getMoney())
);
}
@Override
- public void listenerPayment() {
-
+ public CommonResult updateOrderItem(OrderItemUpdateDTO orderUpdateDTO) {
+ OrderItemDO orderItemDO = OrderConvert.INSTANCE.convert(orderUpdateDTO);
+ orderItemMapper.updateById(orderItemDO);
+ return CommonResult.success(null);
}
@Override
- public void listenerConfirmGoods() {
+ public CommonResult deleteOrderItem(OrderItemDeletedDTO orderItemDeletedDTO) {
+ Integer orderId = orderItemDeletedDTO.getOrderId();
+ List orderItemIds = orderItemDeletedDTO.getOrderItemIds();
+ // 获取当前有效的订单 item
+ List orderItemDOList = orderItemMapper
+ .selectByOrderIdAndDeleted(orderId, DeletedStatusEnum.DELETED_NO.getValue());
+
+ List effectiveOrderItems = orderItemDOList.stream()
+ .filter(orderItemDO -> !orderItemIds.contains(orderItemDO.getId()))
+ .collect(Collectors.toList());
+
+ // 检查订单 item,必须要有一个 item
+ if (CollectionUtils.isEmpty(effectiveOrderItems)) {
+ return ServiceExceptionUtil.error(OrderErrorCodeEnum.ORDER_ITEM_ONLY_ONE.getCode());
+ }
+
+ // 更新订单 item
+ orderItemMapper.updateByIds(
+ orderItemIds,
+ (OrderItemDO) new OrderItemDO()
+ .setDeleted(DeletedStatusEnum.DELETED_YES.getValue())
+ );
+
+ // 更新订单 amount
+ Integer totalAmount = orderCommon.calculatedAmount(effectiveOrderItems);
+ orderMapper.updateById(
+ new OrderDO()
+ .setId(orderId)
+ .setMoney(totalAmount)
+ );
+ return CommonResult.success(null);
}
@Override
- public void listenerExchangeGoods() {
+ public CommonResult updateLogistics(OrderLogisticsDTO orderLogisticsDTO) {
+ OrderLogisticsDO orderLogisticsDO = OrderConvert.INSTANCE.convert(orderLogisticsDTO);
+ orderLogisticsMapper.updateById(orderLogisticsDO);
+ return CommonResult.success(null);
+ }
+ @Override
+ public CommonResult deleteOrder(Integer id) {
+ // 删除订单操作,一般用于 用户端删除,是否存在检查可以过掉
+ orderMapper.updateById((OrderDO) new OrderDO()
+ .setId(id)
+ .setDeleted(DeletedStatusEnum.DELETED_YES.getValue())
+ );
+ return CommonResult.success(null);
+ }
+
+ @Override
+ public CommonResult listenerPayment() {
+ return null;
+ }
+
+ @Override
+ public CommonResult listenerConfirmGoods() {
+ return null;
+ }
+
+ @Override
+ public CommonResult listenerExchangeGoods() {
+ return null;
}
}
diff --git a/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml b/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml
index 4271d7fcb..861e2c32e 100644
--- a/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml
+++ b/order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml
@@ -3,8 +3,9 @@
- id, order_id, commodity_id, quantity, price,
- status, deliveryTime
+ id, order_id, order_no, sku_id, quantity, price,
+ payment_time, delivery_time, receiver_time, closing_time,
+ has_return_exchange, status, create_time, update_time, deleted
INSERT INTO `order_item` (
- order_id, commodity_id, quantity, price,
- status, deliveryTime
+ order_id, order_no, sku_id, quantity, price,
+ payment_time, delivery_time, receiver_time, closing_time,
+ has_return_exchange, status, create_time, update_time, deleted
) VALUES (
- #{orderId}, #{commodityId}, #{quantity}, #{price},
- #{status}, #{deliveryTime}
+ #{orderId}, #{orderNo}, #{skuId}, #{quantity}, #{price},
+ #{paymentTime}, #{deliveryTime}, #{receiverTime}, #{closingTime},
+ #{hasReturnExchange}, #{status},
+ #{createTime}, #{updateTime}, #{deleted}
)
-
\ No newline at end of file
+
+
+
+
+ , order_id = #{orderId}
+
+
+ , order_no = #{orderNo}
+
+
+ , sku_id = #{skuId}
+
+
+ , quantity = #{quantity}
+
+
+ , price = #{price}
+
+ -- time
+
+ , payment_time = #{paymentTime}
+
+
+ , delivery_time = #{deliveryTime}
+
+
+ , receiver_time = #{receiverTime}
+
+
+ , closing_time = #{closingTime}
+
+ -- other
+
+ , has_return_exchange = #{hasReturnExchange}
+
+
+ , status = #{status}
+
+
+ , `deleted` = #{deleted}
+
+
+ , create_time = #{createTime}
+
+
+ , update_time = #{updateTime}
+
+
+
+
+
+
+ UPDATE `order_item`
+
+ WHERE id = #{id}
+
+
+
+
+ UPDATE `order_item`
+
+ WHERE id IN
+
+ #{id}
+
+
+
+
+
+
diff --git a/order/order-service-impl/src/main/resources/mapper/OrderLogisticsMapper.xml b/order/order-service-impl/src/main/resources/mapper/OrderLogisticsMapper.xml
index ad3bedb80..97f758b4c 100644
--- a/order/order-service-impl/src/main/resources/mapper/OrderLogisticsMapper.xml
+++ b/order/order-service-impl/src/main/resources/mapper/OrderLogisticsMapper.xml
@@ -11,11 +11,42 @@
-->
INSERT INTO `order_logistics` (
- area_no, `name`, mobile, address, logistics_no
+ area_no, `name`, mobile, address, logistics_no, create_time, update_time
) VALUES (
#{areaNo}, #{name}, #{mobile}, #{address},
- #{logisticsNo}
+ #{logisticsNo}, #{createTime}, #{updateTime}
)
+
+
+
+
+ , area_no = #{areaNo}
+
+
+ , `name` = #{name}
+
+
+ , mobile = #{mobile}
+
+
+ , address = #{address}
+
+
+ , logistics_no = #{logisticsNo}
+
+
+
+
+
+
+ UPDATE `order_logistics`
+
+ WHERE id = #{id}
+
\ No newline at end of file
diff --git a/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml b/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml
index 254e7ec40..0a00bd9d1 100644
--- a/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml
+++ b/order/order-service-impl/src/main/resources/mapper/OrderMapper.xml
@@ -3,9 +3,9 @@
- id, order_logistics_id, order_no, price, payment_time,
+ id, order_logistics_id, order_no, money, payment_time,
delivery_time, receiver_time, closing_time, has_return_exchange,
- status, remark
+ status, remark, create_time, update_time, `delete`
INSERT INTO `order` (
- order_logistics_id, order_no, price, payment_time,
+ order_logistics_id, order_no, money, payment_time,
delivery_time, receiver_time, closing_time,
- has_return_exchange, status, remark
+ has_return_exchange, status, remark,
+ create_time, update_time, `deleted`
) VALUES (
- #{orderLogisticsId}, ${orderNo}, #{price}, #{paymentTime},
+ #{orderLogisticsId}, #{orderNo}, #{money}, #{paymentTime},
#{deliveryTime}, #{receiverTime}, #{closingTime},
- #{hasReturnExchange}, #{status}, #{remark}
+ #{hasReturnExchange}, #{status}, #{remark},
+ #{createTime}, #{updateTime}, #{deleted}
)
-
+
, order_logistics_id = #{orderLogisticsId}
@@ -34,8 +36,8 @@
, order_no = #{orderNo}
-
- , price = #{price}
+
+ , money = #{money}
-- time
@@ -57,8 +59,11 @@
, status = #{status}
-
- , `delete` = #{delete}
+
+ , remark = #{remark}
+
+
+ , `deleted` = #{deleted}
, create_time = #{createTime}
@@ -66,9 +71,6 @@
, update_time = #{updateTime}
-
- , remark = #{remark}
-
@@ -77,7 +79,7 @@
-->
UPDATE `order`
-
+
WHERE id = #{id}
\ No newline at end of file
diff --git a/order/order-service-impl/src/test/java/cn/iocoder/mall/order/service/OrderServiceImplTest.java b/order/order-service-impl/src/test/java/cn/iocoder/mall/order/service/OrderServiceImplTest.java
index 9c406b2b4..e97789c20 100644
--- a/order/order-service-impl/src/test/java/cn/iocoder/mall/order/service/OrderServiceImplTest.java
+++ b/order/order-service-impl/src/test/java/cn/iocoder/mall/order/service/OrderServiceImplTest.java
@@ -22,7 +22,7 @@ import java.util.Arrays;
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = OrderApplicationTest.class)
-@Transactional
+//@Transactional
public class OrderServiceImplTest {
@Autowired
@@ -34,12 +34,13 @@ public class OrderServiceImplTest {
public void createOrderTest() {
OrderCreateItemDTO orderCreateItemDTO
= new OrderCreateItemDTO()
- .setSkuId("CID_001")
+ .setSkuId(1)
.setQuantity(1);
orderService.createOrder(
new OrderCreateDTO()
.setRemark("")
+ .setName("张三")
.setMobile("13301926050")
.setAddress("深圳市福田区")
.setAreaNo("1000100")