wangming 3 өдөр өмнө
parent
commit
ce1502f1d9

+ 4 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/model/Order.java

@@ -222,6 +222,10 @@ public class Order implements Serializable {
     @ApiModelProperty("买家手机号")
     private String userMobile;
 
+    @TableField(exist = false)
+    @ApiModelProperty("收货人")
+    private String receiver;
+
     @TableField(exist = false)
     private List<OrderItem> orderItems;
 

+ 78 - 0
yami-shop-bean/src/main/java/com/yami/shop/bean/param/BackendOrderParam.java

@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
+ *
+ * https://www.gz-yami.com/
+ *
+ * 未经允许,不可做商业用途!
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.yami.shop.bean.param;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class BackendOrderParam {
+
+    /**
+     * 开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /**
+     * 结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /**
+     * 店铺id
+     */
+    private Long shopId;
+
+    /**
+     * 订购流水号
+     */
+    private String orderNumber;
+
+    @ApiModelProperty("全部-all " +
+            "待支付-paddingPay(0) " +
+            "待发货-paddingShipped(1) " +
+            "待收货-paddingReceived(20 30 40 70) " +
+            "已完成-completed(80) " +
+            "已取消-cancel(60)")
+    /**
+     * 海博订单状态:0-待支付,
+     * 1-待发货(快递使用),
+     * 20-订单已接单(待拣货),
+     * 30-订单待配送(拣货完成/自提类订单为待自提),
+     * 40-订单配送中 ,
+     * 50-订单取消待审核,
+     * 60-订单已取消,
+     * 70-订单已送达,
+     * 80-订单已完成
+     */
+    private String orderStatus;
+
+    /**
+     * 收货人姓名
+     */
+    private String receiver;
+
+    /**
+     * 收货人手机号
+     */
+    private String mobile;
+
+    /**
+     * 订单退款状态参考refundStatus(1:申请退款 2:退款成功 3:部分退款成功 4:退款失败)
+     */
+    private Integer refundStatus;
+
+}

+ 19 - 4
yami-shop-platform/src/main/java/com/yami/shop/platform/controller/OrderController.java

@@ -17,6 +17,7 @@ import com.yami.shop.bean.enums.OrderStatus;
 import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.OrderItem;
 import com.yami.shop.bean.model.UserAddrOrder;
+import com.yami.shop.bean.param.BackendOrderParam;
 import com.yami.shop.bean.param.DeliveryOrderParam;
 import com.yami.shop.bean.param.OrderParam;
 import com.yami.shop.bean.param.OrderPayParam;
@@ -29,12 +30,12 @@ import lombok.AllArgsConstructor;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -44,7 +45,7 @@ import java.util.Objects;
  * @version 1.0.0
  * @since 2018-09-15
  */
-@Controller
+@RestController
 @RequestMapping("/platform/order")
 @AllArgsConstructor
 public class OrderController {
@@ -60,12 +61,26 @@ public class OrderController {
      * 分页获取
      */
     @GetMapping("/page")
-    @PreAuthorize("@pms.hasPermission('platform:order:page')")
+//    @PreAuthorize("@pms.hasPermission('platform:order:page')")
     public R<IPage<Order>> page(OrderParam orderParam, PageParam<Order> page) {
         IPage<Order> orderIPage = orderService.pageOrdersDetialByOrderParam(page, orderParam);
         return R.SUCCESS(orderIPage);
     }
 
+    @GetMapping("/deliverList")
+    @ApiOperation("后管端-快递订单列表")
+    public R<IPage<Order>> deliverList(BackendOrderParam orderParam, PageParam<Order> page) {
+        IPage<Order> orderIPage = orderService.deliverList(page, orderParam);
+        return R.SUCCESS(orderIPage);
+    }
+
+    @GetMapping("/deliverListStatusNum")
+    @ApiOperation("后管端-快递订单列表-订单状态数量")
+    public R<Map<String,Integer>> deliverListStatusNum() {
+        return R.SUCCESS(orderService.deliverListStatusNum());
+    }
+
+
     /**
      * 根据商家获取支付信息
      */
@@ -81,7 +96,7 @@ public class OrderController {
      * 获取信息
      */
     @GetMapping("/orderInfo/{orderNumber}")
-    @PreAuthorize("@pms.hasPermission('platform:order:info')")
+//    @PreAuthorize("@pms.hasPermission('platform:order:info')")
     public R<Order> info(@PathVariable("orderNumber") String orderNumber) {
         Order order = orderService.getOne(new LambdaUpdateWrapper<Order>().eq(Order::getOrderNumber, orderNumber));
         if (order == null) {

+ 4 - 0
yami-shop-service/src/main/java/com/yami/shop/dao/OrderMapper.java

@@ -17,6 +17,7 @@ import com.yami.shop.bean.app.dto.MyOrderItemDto;
 import com.yami.shop.bean.app.dto.OrderCountData;
 import com.yami.shop.bean.distribution.UserShoppingDataDto;
 import com.yami.shop.bean.model.Order;
+import com.yami.shop.bean.param.BackendOrderParam;
 import com.yami.shop.bean.param.OrderParam;
 import com.yami.shop.bean.param.OrderPayParam;
 import com.yami.shop.common.util.PageAdapter;
@@ -41,6 +42,8 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     List<Order> listOrdersDetialByOrderParam(@Param("adapter") PageAdapter adapter, @Param("orderParam") OrderParam orderParam);
 
+    List<Order> deliverList(@Param("adapter") PageAdapter adapter, @Param("orderParam") BackendOrderParam orderParam);
+
     Long countOrderDetial(@Param("orderParam") OrderParam orderParam);
 
     UserShoppingDataDto calculateUserInShopData(@Param("shopId") Long shopId, @Param("userId") String userId);
@@ -118,4 +121,5 @@ public interface OrderMapper extends BaseMapper<Order> {
 
     void updateByToPaySuccessDelivery(@Param("orderNumbers") List<String> orderNumbers, @Param("payType") Integer payType);
 
+    Integer statusCount(@Param("status") List<Integer> status);
 }

+ 6 - 2
yami-shop-service/src/main/java/com/yami/shop/service/OrderService.java

@@ -20,10 +20,9 @@ import com.yami.shop.bean.model.Order;
 import com.yami.shop.bean.model.OrderItem;
 import com.yami.shop.bean.model.OrderRefund;
 import com.yami.shop.bean.param.*;
-import org.springframework.web.bind.annotation.RequestBody;
+import com.yami.shop.common.util.PageParam;
 
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -93,6 +92,8 @@ public interface OrderService extends IService<Order> {
 
     IPage<Order> pageOrdersDetialByOrderParam(Page<Order> page, OrderParam orderParam);
 
+    IPage<Order> deliverList(PageParam<Order> page, BackendOrderParam orderParam);
+
     void deleteOrders(List<Order> orders);
 
     OrderCountData getOrderCount(String userId);
@@ -144,4 +145,7 @@ public interface OrderService extends IService<Order> {
      * @return {@link OrderRefundAmountDTO}
      */
     OrderRefundAmountDTO computeOrderRefundAmount(String orderNumber, List<OrderRefundAmountParam> suk);
+
+    Map<String,Integer> deliverListStatusNum();
+
 }

+ 1 - 2
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderRefundServiceImpl.java

@@ -298,8 +298,7 @@ public class OrderRefundServiceImpl extends ServiceImpl<OrderRefundMapper, Order
     private void getRefundTypeByOrderItem2(OrderRefundDto orderRefundDto) {
         List<OrderItem> item = orderItemService.getRefundTypeByOrderItem2(orderRefundDto.getRefundId());
         if (!item.isEmpty()){
-            orderRefundDto.setGoodsTotal(item.get(0).getGoodsTotal());
-        }
+            orderRefundDto.setGoodsTotal(item.stream().map(OrderItem::getGoodsTotal).reduce(0.0, Double::sum));}
         orderRefundDto.setOrderItems(item);
     }
 

+ 30 - 7
yami-shop-service/src/main/java/com/yami/shop/service/impl/OrderServiceImpl.java

@@ -26,24 +26,27 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.google.gson.internal.LinkedTreeMap;
 import com.yami.shop.bean.app.dto.OrderCountData;
 import com.yami.shop.bean.app.dto.ShopCartOrderMergerDto;
 import com.yami.shop.bean.enums.*;
-import com.yami.shop.bean.event.*;
+import com.yami.shop.bean.event.CancelOrderEvent;
+import com.yami.shop.bean.event.ReceiptOrderEvent;
+import com.yami.shop.bean.event.SubmitOrderEvent;
+import com.yami.shop.bean.event.SubmitScoreOrderEvent;
 import com.yami.shop.bean.model.*;
 import com.yami.shop.bean.param.*;
 import com.yami.shop.common.config.Constant;
 import com.yami.shop.common.exception.GlobalException;
-import com.yami.shop.common.exception.YamiShopBindException;
 import com.yami.shop.common.util.Arith;
 import com.yami.shop.common.util.PageAdapter;
+import com.yami.shop.common.util.PageParam;
 import com.yami.shop.dao.*;
 import com.yami.shop.service.OrderItemService;
-import com.yami.shop.service.OrderRefundService;
 import com.yami.shop.service.OrderService;
 import com.yami.shop.service.OrderSettlementService;
-import com.yami.shop.service.hb.IHBOrderService;
 import com.yami.shop.utils.CullenUtils;
 import com.yami.shop.wx.po.RefundInfoPo;
 import com.yami.shop.wx.service.WxProviderService;
@@ -53,18 +56,15 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.time.Instant;
@@ -338,6 +338,17 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return page;
     }
 
+    @Override
+    public IPage<Order> deliverList(PageParam<Order> page, BackendOrderParam orderParam) {
+        List<Order> orderList = orderMapper.deliverList(new PageAdapter(page), orderParam);
+        if (!orderList.isEmpty()){
+            orderList.forEach(c-> c.setOrderItems(orderItemMapper.getListByOrderNumber(c.getOrderNumber())));
+        }
+        page.setRecords(orderList);
+        page.setTotal(orderList.size());
+        return page;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void deleteOrders(List<Order> orders) {
@@ -1087,6 +1098,18 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return null;
     }
 
+    @Override
+    public Map<String, Integer> deliverListStatusNum() {
+        Map<String, Integer> map = new LinkedTreeMap<>();
+        map.put("all",orderMapper.statusCount(Lists.newArrayList(0, 1,20,30,40,50,60,70,80)));
+        map.put("paddingPay",orderMapper.statusCount(Lists.newArrayList(0)));
+        map.put("paddingShipped",orderMapper.statusCount(Lists.newArrayList(1)));
+        map.put("paddingReceived",orderMapper.statusCount(Lists.newArrayList(20,30,40,50,70)));
+        map.put("completed",orderMapper.statusCount(Lists.newArrayList(80)));
+        map.put("cancel",orderMapper.statusCount(Lists.newArrayList(60)));
+        return map;
+    }
+
 
     private boolean isPaymentOver7Days(Date paymentDate) {
         // 1. 将支付时间转换为 Instant

+ 65 - 1
yami-shop-service/src/main/resources/mapper/OrderMapper.xml

@@ -28,6 +28,8 @@
         <result column="delete_status" jdbcType="INTEGER" property="deleteStatus"/>
         <result column="refund_status" jdbcType="INTEGER" property="refundStatus"/>
         <result column="close_type" jdbcType="INTEGER" property="closeType"/>
+        <result column="user_mobile" jdbcType="VARCHAR" property="userMobile"/>
+        <result column="receiver" jdbcType="VARCHAR" property="receiver"/>
     </resultMap>
 
     <resultMap id="MyOrderMap" type="com.yami.shop.bean.app.dto.MyOrderDto">
@@ -162,6 +164,7 @@
         <result column="shop_name" jdbcType="VARCHAR" property="shopName"/>
         <result column="pay_score" jdbcType="INTEGER" property="payScore"/>
         <result column="user_mobile" jdbcType="VARCHAR" property="userMobile"/>
+        <result column="receiver" jdbcType="VARCHAR" property="receiver"/>
         <result column="qnh_order_id" jdbcType="VARCHAR" property="qnhOrderId"/>
         <result column="qnh_order_status" jdbcType="VARCHAR" property="qnhOrderStatus"/>
         <result column="dvy_status" jdbcType="INTEGER" property="dvyStatus"/>
@@ -398,7 +401,7 @@
 <!--            <if test="orderParam.type!=null and orderParam.type==6 and orderParam.content != null and orderParam.content != ''">-->
 <!--                and u.dvy_flow_id = #{orderParam.content}-->
 <!--            </if>-->
-            <if test="orderParam.hb_order_status != null">
+            <if test="orderParam.hbOrderStatus != null">
                 and o.hb_order_status = #{orderParam.hbOrderStatus}
             </if>
 <!--            <if test="orderParam.payType != null">-->
@@ -454,6 +457,61 @@
         ORDER BY temp.create_time DESC
     </select>
 
+    <select id="deliverList" resultMap="BaseResultMap">
+        SELECT a.*,b.receiver,b.mobile user_mobile FROM tz_order a
+        LEFT JOIN tz_user_addr_order b on a.addr_order_id=b.addr_order_id
+        <where>
+            a.dvy_type=3
+            <if test="orderParam.orderNumber != null and orderParam.orderNumber != ''">
+                and a.order_number = #{orderParam.orderNumber}
+            </if>
+            <if test="orderParam.shopId != null">
+                and a.shop_id = #{orderParam.shopId}
+            </if>
+            <if test="orderParam.startTime != null">
+                and a.create_time &gt; #{orderParam.startTime}
+            </if>
+            <if test="orderParam.endTime != null">
+                and a.create_time &lt; #{orderParam.endTime}
+            </if>
+            <if test="orderParam.refundStatus != null and orderParam.refundStatus != 0">
+                and a.refund_status = #{orderParam.refundStatus}
+            </if>
+            <if test="orderParam.receiver != null">
+                and b.receiver LIKE concat("%",#{orderParam.receiver},"%")
+            </if>
+            <if test="orderParam.mobile != null">
+                and b.mobile LIKE concat("%",#{orderParam.mobile},"%")
+            </if>
+
+            <if test="orderParam.orderStatus != null and orderParam.orderStatus != ''">
+                <if test="orderParam.orderStatus == 'all'">
+                    AND a.hb_order_status in (0, 1,20,30,40,50,60,70,80)
+                </if>
+                <if test="orderParam.orderStatus == 'paddingPay'">
+                    AND a.hb_order_status in (0)
+                </if>
+
+                <if test="orderParam.orderStatus == 'paddingShipped'">
+                    AND a.hb_order_status in (1)
+                </if>
+
+                <if test="orderParam.orderStatus == 'paddingReceived'">
+                    AND a.hb_order_status in (20,30,40,50,70)
+                </if>
+                <if test="orderParam.orderStatus == 'completed'">
+                    AND a.hb_order_status in (80)
+                </if>
+                <if test="orderParam.orderStatus == 'cancel'">
+                    AND a.hb_order_status in (60)
+                </if>
+            </if>
+        </where>
+        order by a.create_time desc,a.order_id desc
+        LIMIT #{adapter.begin} , #{adapter.size}
+    </select>
+
+
     <select id="countOrderDetial" resultType="long">
         SELECT count(0)
         FROM tz_order o
@@ -845,5 +903,11 @@
         </if>
     </select>
 
+    <select id="statusCount" resultType="integer">
+        SELECT count(1) FROM `tz_order` WHERE hb_order_status in
+        <foreach collection="status" item="status" separator="," open="(" close=")">
+            #{status}
+        </foreach>
+    </select>
 
 </mapper>