订单列表增加按照商品名称查询

This commit is contained in:
wuchunlei
2023-12-07 15:38:18 +08:00
parent b321ad333a
commit d93391fbf9
4 changed files with 71 additions and 25 deletions

View File

@@ -18,6 +18,7 @@ import java.util.List;
@Mapper
public interface BuyOrderDao extends BaseMapper<BuyOrder> {
List<BuyOrder> orderList(BuyOrderListRequestVo requestVo);
List<BuyOrder> orderListCount(BuyOrderListRequestVo requestVo);
List<BuyOrder> orderStatusNum(Integer userId);

View File

@@ -68,6 +68,9 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
@Autowired
private BookService bookService;
@Autowired
private BuyOrderDao buyOrderDao;
@Autowired
private BuyOrderProductService buyOrderProductService;
@@ -352,25 +355,17 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
@Override
public Map<String, Object> orderList(BuyOrderListRequestVo requestVo) {
Page<BuyOrder> buyOrderPage = new Page<>(requestVo.getPageIndex(), requestVo.getPageSize());
List<BuyOrderResponseVo> data = new ArrayList<>();
QueryWrapper<BuyOrder> buyOrderQueryWrapper = new QueryWrapper<>();
buyOrderQueryWrapper.and(StringUtils.isNotBlank(requestVo.getSearchKeyWord()),t->t.like("order_sn", requestVo.getSearchKeyWord()).or().like("shipping_user", requestVo.getSearchKeyWord()).or().like("user_phone", requestVo.getSearchKeyWord()));
buyOrderQueryWrapper.eq(StringUtils.isNotBlank(requestVo.getOrderStatus()), "order_status", requestVo.getOrderStatus());
buyOrderQueryWrapper.gt(requestVo.getStartTime() != null, "create_time", requestVo.getStartTime());
buyOrderQueryWrapper.lt(requestVo.getEndTime() != null, "create_time", requestVo.getStartTime());
buyOrderQueryWrapper.eq("order_type","order");
buyOrderQueryWrapper.orderByDesc("create_time");
Integer totalSize = list(buyOrderQueryWrapper).size();
Integer totalPage = totalSize / requestVo.getPageSize() + 1;
Page<BuyOrder> page = page(buyOrderPage, buyOrderQueryWrapper);
List<BuyOrder> buyOrderList = page.getRecords();
requestVo.setIndex((requestVo.getPageIndex()-1)*10);
List<BuyOrder> buyOrderList = buyOrderDao.orderList(requestVo);
int count = buyOrderDao.orderListCount(requestVo).size();
for (BuyOrder buyOrder : buyOrderList) {
BuyOrderResponseVo responseVo = setBuyOrderInfo(buyOrder);
data.add(responseVo);
}
Map<String, Object> result = new HashMap<>();
Integer totalSize = count;
Integer totalPage = totalSize / requestVo.getPageSize() + 1;
result.put("totalDataSize", totalSize);
result.put("totalPage", totalPage);
result.put("data", data);

View File

@@ -27,6 +27,10 @@ public class BuyOrderListRequestVo {
* 搜索关键词
*/
private String searchKeyWord;
/**
* 商品名称
*/
private String productName;
/**
* 开始时间
*/

View File

@@ -81,27 +81,73 @@
</select>
<select id="orderList" resultType="com.peanut.modules.book.entity.BuyOrder"
<select id="orderListCount" resultType="com.peanut.modules.book.entity.BuyOrder"
parameterType="com.peanut.modules.book.vo.request.BuyOrderListRequestVo" resultMap="buyOrderMap">
<!--
select order_sn, province, city, district, user_phone, address, payment_method, order_status, remark
-->
select *
from buy_order
select b.*
from buy_order b
<if test="productName != null and productName!= ''">
left join buy_order_product p on b.order_id = p.order_id
left join shop_product s on s.product_id = p.product_id
</if>
<where>
<if test="searchKeyWord != null">
order_sn like #{searchKeyWord}
<if test="searchKeyWord != null and searchKeyWord!= ''">
and (b.order_sn like concat('%',concat(#{searchKeyWord},'%'))
or b.shipping_user like concat('%',concat(#{searchKeyWord},'%'))
or b.user_phone like concat('%',concat(#{searchKeyWord},'%')))
</if>
<if test="orderStatus != null">
and order_status = #{orderStatus}
<if test="productName != null and productName!= ''">
and (s.product_name like concat('%',concat(#{productName},'%')))
</if>
<if test="orderStatus != null and orderStatus!= ''">
and b.order_status = #{orderStatus}
</if>
<if test="startTime != null">
and create_time &gt;= #{startTime}
and b.create_time &gt;= #{startTime}
</if>
<if test="endTime != null">
and create_time &lt;= #{endTime}
and b.create_time &lt;= #{endTime}
</if>
and b.order_type = 'order'
and b.del_flag = 0
</where>
<if test="productName != null and productName!= ''">
group by b.order_id
</if>
</select>
<select id="orderList" resultType="com.peanut.modules.book.entity.BuyOrder"
parameterType="com.peanut.modules.book.vo.request.BuyOrderListRequestVo" resultMap="buyOrderMap">
select b.*
from buy_order b
<if test="productName != null and productName!= ''">
left join buy_order_product p on b.order_id = p.order_id
left join shop_product s on s.product_id = p.product_id
</if>
<where>
<if test="searchKeyWord != null and searchKeyWord!= ''">
and (b.order_sn like concat('%',concat(#{searchKeyWord},'%'))
or b.shipping_user like concat('%',concat(#{searchKeyWord},'%'))
or b.user_phone like concat('%',concat(#{searchKeyWord},'%')))
</if>
<if test="productName != null and productName!= ''">
and (s.product_name like concat('%',concat(#{productName},'%')))
</if>
<if test="orderStatus != null and orderStatus!= ''">
and b.order_status = #{orderStatus}
</if>
<if test="startTime != null">
and b.create_time &gt;= #{startTime}
</if>
<if test="endTime != null">
and b.create_time &lt;= #{endTime}
</if>
and b.order_type = 'order'
and b.del_flag = 0
</where>
<if test="productName != null and productName!= ''">
group by b.order_id
</if>
order by b.create_time desc
limit #{index},#{pageSize}
</select>