Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
abf32511
提交
abf32511
authored
3月 28, 2019
作者:
sin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- 优化订单列表返回结构
上级
1900ccaf
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
338 行增加
和
7 行删除
+338
-7
CollectionUtil.java
...java/cn/iocoder/common/framework/util/CollectionUtil.java
+55
-5
OrderBO.java
.../src/main/java/cn/iocoder/mall/order/api/dto/OrderBO.java
+20
-1
OrderItemBO.java
.../main/java/cn/iocoder/mall/order/api/dto/OrderItemBO.java
+207
-0
OrderItemConvert.java
...oder/mall/order/application/convert/OrderItemConvert.java
+6
-0
OrderLogisticsConvert.java
...mall/order/application/convert/OrderLogisticsConvert.java
+2
-0
OrderItemMapper.java
.../main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java
+13
-0
OrderServiceImpl.java
.../java/cn/iocoder/mall/order/service/OrderServiceImpl.java
+22
-1
OrderItemMapper.xml
...ervice-impl/src/main/resources/mapper/OrderItemMapper.xml
+13
-0
没有找到文件。
common/common-framework/src/main/java/cn/iocoder/common/framework/util/CollectionUtil.java
浏览文件 @
abf32511
package
cn
.
iocoder
.
common
.
framework
.
util
;
import
java.util.Array
s
;
import
java.util.Collection
;
import
java.
util.HashSet
;
import
java.util.
Set
;
import
org.springframework.util.ReflectionUtil
s
;
import
java.
lang.reflect.Field
;
import
java.util.
*
;
public
class
CollectionUtil
{
...
...
@@ -12,7 +12,56 @@ public class CollectionUtil {
}
public
static
<
T
>
Set
<
T
>
asSet
(
T
...
objs
)
{
return
new
HashSet
<>(
Arrays
.
asList
(
objs
));
return
new
HashSet
<>(
Arrays
.
asList
(
objs
));
}
/**
* 创建指定属性为KEY, objs的每个元素为值的Multimap的Map集合。
*
* @param objs 数组
* @param keyClazz 值类型,即{@code property}的类型
* @param valClazz 值类型
* @param property 属性名
* @param <K> 泛型
* @param <V> 泛型
* @return 指定属性的Map集合
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
K
,
V
>
Map
<
K
,
List
<
V
>>
buildMultimap
(
List
<
V
>
objs
,
Class
<
K
>
keyClazz
,
Class
<
V
>
valClazz
,
String
property
)
{
if
(
objs
.
isEmpty
())
{
return
Collections
.
EMPTY_MAP
;
}
Map
<
K
,
List
<
V
>>
results
=
new
HashMap
<>(
objs
.
size
());
try
{
Field
field
=
getField
(
objs
,
property
);
for
(
V
obj
:
objs
)
{
K
key
=
(
K
)
field
.
get
(
obj
);
List
<
V
>
value
=
results
.
get
(
key
);
if
(
value
==
null
)
{
results
.
put
(
key
,
value
=
new
ArrayList
<>());
}
value
.
add
(
obj
);
}
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
return
results
;
}
/**
* 获取 object 属性 field
*
* @param objs 对象数组
* @param property 属性
* @return 对象元素里的指定属性Field, 并设置该field可以被访问
*/
public
static
Field
getField
(
List
<?>
objs
,
String
property
)
{
Field
field
=
ReflectionUtils
.
findField
(
objs
.
get
(
0
).
getClass
(),
property
);
if
(!
field
.
isAccessible
())
{
field
.
setAccessible
(
true
);
}
return
field
;
}
}
\ No newline at end of file
order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderBO.java
浏览文件 @
abf32511
...
...
@@ -2,6 +2,7 @@ package cn.iocoder.mall.order.api.dto;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* 订单 page
...
...
@@ -79,9 +80,17 @@ public class OrderBO implements Serializable {
*/
private
String
remark
;
///
/// 关联信息
/**
* orderItem
*/
private
List
<
OrderItemBO
>
orderItems
;
@Override
public
String
toString
()
{
return
"Order
Page
BO{"
+
return
"OrderBO{"
+
"id="
+
id
+
", userId="
+
userId
+
", orderLogisticsId="
+
orderLogisticsId
+
...
...
@@ -94,6 +103,7 @@ public class OrderBO implements Serializable {
", hasReturnExchange="
+
hasReturnExchange
+
", status="
+
status
+
", remark='"
+
remark
+
'\''
+
", orderItems="
+
orderItems
+
'}'
;
}
...
...
@@ -204,4 +214,13 @@ public class OrderBO implements Serializable {
this
.
remark
=
remark
;
return
this
;
}
public
List
<
OrderItemBO
>
getOrderItems
()
{
return
orderItems
;
}
public
OrderBO
setOrderItems
(
List
<
OrderItemBO
>
orderItems
)
{
this
.
orderItems
=
orderItems
;
return
this
;
}
}
order/order-service-api/src/main/java/cn/iocoder/mall/order/api/dto/OrderItemBO.java
0 → 100644
浏览文件 @
abf32511
package
cn
.
iocoder
.
mall
.
order
.
api
.
dto
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 订单 item
*
* @author Sin
* @time 2019-03-28 21:11
*/
public
class
OrderItemBO
implements
Serializable
{
/**
* 编号
*/
private
Integer
id
;
/**
* 订单编号
*/
private
Integer
orderId
;
/**
* 订单号
*/
private
String
orderNo
;
/**
* 商品编号
*/
private
Integer
skuId
;
/**
* 数量
*/
private
Integer
quantity
;
/**
* 金额(分)
*/
private
Integer
price
;
///
/// 时间信息
/**
* 付款时间
*/
private
Date
paymentTime
;
/**
* 发货时间
*/
private
Date
deliveryTime
;
/**
* 收货时间
*/
private
Date
receiverTime
;
/**
* 成交时间
*/
private
Date
closingTime
;
///
/// 其他
/**
* 是否退货
*
* - 1、没有
* - 2、换货
* - 3、退货
* - 4、换货 + 退货
*/
private
Integer
hasReturnExchange
;
/**
* 状态
*
* - 1、待付款
* - 2、待发货
* - 3、已发货
* - 4、已完成
* - 5、已关闭
*/
private
Integer
status
;
@Override
public
String
toString
()
{
return
"OrderItemDO{"
+
"id="
+
id
+
", orderId="
+
orderId
+
", orderNo='"
+
orderNo
+
'\''
+
", skuId='"
+
skuId
+
'\''
+
", quantity="
+
quantity
+
", price="
+
price
+
", paymentTime="
+
paymentTime
+
", deliveryTime="
+
deliveryTime
+
", receiverTime="
+
receiverTime
+
", closingTime="
+
closingTime
+
", hasReturnExchange="
+
hasReturnExchange
+
", status="
+
status
+
'}'
;
}
public
Integer
getId
()
{
return
id
;
}
public
OrderItemBO
setId
(
Integer
id
)
{
this
.
id
=
id
;
return
this
;
}
public
Integer
getOrderId
()
{
return
orderId
;
}
public
OrderItemBO
setOrderId
(
Integer
orderId
)
{
this
.
orderId
=
orderId
;
return
this
;
}
public
String
getOrderNo
()
{
return
orderNo
;
}
public
OrderItemBO
setOrderNo
(
String
orderNo
)
{
this
.
orderNo
=
orderNo
;
return
this
;
}
public
Integer
getSkuId
()
{
return
skuId
;
}
public
OrderItemBO
setSkuId
(
Integer
skuId
)
{
this
.
skuId
=
skuId
;
return
this
;
}
public
Integer
getQuantity
()
{
return
quantity
;
}
public
OrderItemBO
setQuantity
(
Integer
quantity
)
{
this
.
quantity
=
quantity
;
return
this
;
}
public
Integer
getPrice
()
{
return
price
;
}
public
OrderItemBO
setPrice
(
Integer
price
)
{
this
.
price
=
price
;
return
this
;
}
public
Date
getPaymentTime
()
{
return
paymentTime
;
}
public
OrderItemBO
setPaymentTime
(
Date
paymentTime
)
{
this
.
paymentTime
=
paymentTime
;
return
this
;
}
public
Date
getDeliveryTime
()
{
return
deliveryTime
;
}
public
OrderItemBO
setDeliveryTime
(
Date
deliveryTime
)
{
this
.
deliveryTime
=
deliveryTime
;
return
this
;
}
public
Date
getReceiverTime
()
{
return
receiverTime
;
}
public
OrderItemBO
setReceiverTime
(
Date
receiverTime
)
{
this
.
receiverTime
=
receiverTime
;
return
this
;
}
public
Date
getClosingTime
()
{
return
closingTime
;
}
public
OrderItemBO
setClosingTime
(
Date
closingTime
)
{
this
.
closingTime
=
closingTime
;
return
this
;
}
public
Integer
getHasReturnExchange
()
{
return
hasReturnExchange
;
}
public
OrderItemBO
setHasReturnExchange
(
Integer
hasReturnExchange
)
{
this
.
hasReturnExchange
=
hasReturnExchange
;
return
this
;
}
public
Integer
getStatus
()
{
return
status
;
}
public
OrderItemBO
setStatus
(
Integer
status
)
{
this
.
status
=
status
;
return
this
;
}
}
order/order-service-impl/src/main/java/cn/iocoder/mall/order/application/convert/OrderItemConvert.java
浏览文件 @
abf32511
package
cn
.
iocoder
.
mall
.
order
.
application
.
convert
;
import
cn.iocoder.mall.order.api.dto.OrderCreateItemDTO
;
import
cn.iocoder.mall.order.api.dto.OrderItemBO
;
import
cn.iocoder.mall.order.api.dto.OrderItemUpdateDTO
;
import
cn.iocoder.mall.order.dataobject.OrderItemDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -14,6 +16,7 @@ import java.util.List;
* @author Sin
* @time 2019-03-23 14:34
*/
@Mapper
public
interface
OrderItemConvert
{
OrderItemConvert
INSTANCE
=
Mappers
.
getMapper
(
OrderItemConvert
.
class
);
...
...
@@ -23,4 +26,7 @@ public interface OrderItemConvert {
@Mappings
({})
List
<
OrderItemDO
>
convert
(
List
<
OrderCreateItemDTO
>
orderCreateItemDTOList
);
@Mappings
({})
List
<
OrderItemBO
>
convertOrderItemDO
(
List
<
OrderItemDO
>
orderItemDOList
);
}
order/order-service-impl/src/main/java/cn/iocoder/mall/order/application/convert/OrderLogisticsConvert.java
浏览文件 @
abf32511
...
...
@@ -3,6 +3,7 @@ package cn.iocoder.mall.order.application.convert;
import
cn.iocoder.mall.order.api.dto.OrderCreateDTO
;
import
cn.iocoder.mall.order.api.dto.OrderLogisticsUpdateDTO
;
import
cn.iocoder.mall.order.dataobject.OrderLogisticsDO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.Mappings
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -12,6 +13,7 @@ import org.mapstruct.factory.Mappers;
* @author Sin
* @time 2019-03-23 14:39
*/
@Mapper
public
interface
OrderLogisticsConvert
{
OrderLogisticsConvert
INSTANCE
=
Mappers
.
getMapper
(
OrderLogisticsConvert
.
class
);
...
...
order/order-service-impl/src/main/java/cn/iocoder/mall/order/dao/OrderItemMapper.java
浏览文件 @
abf32511
...
...
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Param;
import
org.springframework.stereotype.Repository
;
import
javax.validation.constraints.NotNull
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
@@ -41,6 +42,18 @@ public interface OrderItemMapper {
OrderItemDO
orderItemDO
);
/**
* 查询 - 根据 orderIds 和 status
*
* @param orderIds
* @param status
* @return
*/
List
<
OrderItemDO
>
selectByOrderIdsAndStatus
(
@Param
(
"orderIds"
)
Collection
<
Integer
>
orderIds
,
@Param
(
"status"
)
Integer
status
);
/**
* 查询 - 根据 orderId 下的 item
*
...
...
order/order-service-impl/src/main/java/cn/iocoder/mall/order/service/OrderServiceImpl.java
浏览文件 @
abf32511
package
cn
.
iocoder
.
mall
.
order
.
service
;
import
cn.iocoder.common.framework.constant.DeletedStatusEnum
;
import
cn.iocoder.common.framework.util.CollectionUtil
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.order.OrderCommon
;
...
...
@@ -53,13 +54,33 @@ public class OrderServiceImpl implements OrderService {
return
CommonResult
.
success
(
new
OrderPageBO
().
setTotal
(
0
));
}
// 获取订单数据
List
<
OrderDO
>
orderDOList
=
orderMapper
.
selectPage
(
orderQueryDTO
);
// 获取订单 id
Set
<
Integer
>
orderIds
=
orderDOList
.
stream
().
map
(
orderDO
->
orderDO
.
getId
()).
collect
(
Collectors
.
toSet
());
// 获取 订单的 items
List
<
OrderItemDO
>
orderItemDOList
=
orderItemMapper
.
selectByOrderIdsAndStatus
(
orderIds
,
DeletedStatusEnum
.
DELETED_NO
.
getValue
());
List
<
OrderItemBO
>
orderItemBOList
=
OrderItemConvert
.
INSTANCE
.
convertOrderItemDO
(
orderItemDOList
);
Map
<
Integer
,
List
<
OrderItemBO
>>
orderItemBOMultimap
=
CollectionUtil
.
buildMultimap
(
orderItemBOList
,
Integer
.
class
,
OrderItemBO
.
class
,
"orderId"
);
// 转换 orderDO 为 OrderBO,并设置 item
List
<
OrderBO
>
orderPageBOList
=
OrderConvert
.
INSTANCE
.
convertPageBO
(
orderDOList
);
List
<
OrderBO
>
result
=
orderPageBOList
.
stream
().
map
(
orderBO
->
{
if
(
orderItemBOMultimap
.
containsKey
(
orderBO
.
getId
()))
{
orderBO
.
setOrderItems
(
orderItemBOMultimap
.
get
(
orderBO
.
getId
()));
}
return
orderBO
;
}).
collect
(
Collectors
.
toList
());
return
CommonResult
.
success
(
new
OrderPageBO
()
.
setTotal
(
totalCount
)
.
setOrders
(
orderPageBOLis
t
)
.
setOrders
(
resul
t
)
);
}
...
...
order/order-service-impl/src/main/resources/mapper/OrderItemMapper.xml
浏览文件 @
abf32511
...
...
@@ -110,4 +110,17 @@
AND order_id = #{orderId}
</if>
</select>
<!--
查询 - 根据 orderIds 和 status
-->
<select
id=
"selectByOrderIdsAndStatus"
resultType=
"cn.iocoder.mall.order.dataobject.OrderItemDO"
>
SELECT * FROM `order_item`
WHERE `status` = #{status}
AND `order_id`
IN
<foreach
collection=
"orderIds"
index=
"orderId"
open=
"("
close=
")"
separator=
","
>
#{orderId}
</foreach>
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论