Jelajahi Sumber

Merge remote-tracking branch 'origin/point_dev' into point_dev

# Conflicts:
#	nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/ProductOrderController.java
#	nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/ProductOrderInfoServiceImpl.java
jinshihui 1 Minggu lalu
induk
melakukan
cc6bed68a9

+ 20 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderCountVo.java

@@ -0,0 +1,20 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("积分订单管理顶部统计VO")
+public class ProductOrderCountVo {
+
+    @ApiModelProperty("待发货数量")
+    private Integer pendingShipmentQty;
+
+    @ApiModelProperty("进行中数量")
+    private Integer inProgressQty;
+
+    @ApiModelProperty("售后数量")
+    private Integer afterSalesQty;
+
+}

+ 62 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderPageItemVo.java

@@ -0,0 +1,62 @@
+package com.ylx.massage.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("积分订单管理分页列表行VO")
+public class ProductOrderPageItemVo {
+
+    @ApiModelProperty("订单ID")
+    private Long id;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("用户openId")
+    private String openId;
+
+    @ApiModelProperty("电话号码")
+    private String phone;
+
+    @ApiModelProperty("昵称")
+    private String nickName;
+
+    @ApiModelProperty("订单状态:0待付款 1待发货 2已发货 3待收货 4已收货 5换货待审核 6换货中 7退货待审核")
+    private Integer orderStatus;
+
+    @ApiModelProperty("支付状态:0未支付 1已支付 2支付失败 3已退款")
+    private Integer payStatus;
+
+    @ApiModelProperty("实付金额")
+    private BigDecimal payAmount;
+
+    @ApiModelProperty("使用积分数量")
+    private Integer pointsUsed;
+
+    @ApiModelProperty("快递单号")
+    private String logisticsNo;
+
+    @ApiModelProperty("发货时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime deliveryTime;
+
+    @ApiModelProperty("下单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("商品名称")
+    private String productName;
+
+    @ApiModelProperty("商品ID")
+    private Long productId;
+
+    @ApiModelProperty("购买数量")
+    private Integer quantity;
+
+}

+ 6 - 47
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderPageVo.java

@@ -1,59 +1,18 @@
 package com.ylx.massage.domain.vo;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
 @Data
-@ApiModel("管理后台积分订单管理分页vo")
+@ApiModel("积分订单管理分页总VO")
 public class ProductOrderPageVo {
 
-    @ApiModelProperty("订单ID")
-    private Long id;
-
-    @ApiModelProperty("订单号")
-    private String orderNo;
-
-    @ApiModelProperty("用户openId")
-    private String openId;
-
-    @ApiModelProperty("电话号码")
-    private String phone;
-
-    @ApiModelProperty("昵称")
-    private String nickName;
-
-    @ApiModelProperty("订单状态:0待付款 1待发货 2已发货 3待收货 4已收货 5换货待审核 6换货中 7退货待审核")
-    private Integer orderStatus;
-
-    @ApiModelProperty("支付状态:0未支付 1已支付 2支付失败 3已退款")
-    private Integer payStatus;
-
-    @ApiModelProperty("实付金额(分)")
-    private BigDecimal payAmount;
-
-    @ApiModelProperty("使用积分数量")
-    private Integer pointsUsed;
-
-    @ApiModelProperty("快递单号")
-    private String logisticsNo;
-
-    @ApiModelProperty("发货时间")
-    private LocalDateTime deliveryTime;
-
-    @ApiModelProperty("下单时间")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty("商品名称")
-    private String productName;
-
-    @ApiModelProperty("商品ID")
-    private Long productId;
+    @ApiModelProperty("分页列表数据")
+    private Page<ProductOrderPageItemVo> list;
 
-    @ApiModelProperty("购买数量")
-    private Integer quantity;
+    @ApiModelProperty("顶部统计数据")
+    private ProductOrderCountVo count;
 
 }

+ 8 - 4
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/ProductOrderInfoMapper.java

@@ -3,8 +3,8 @@ package com.ylx.massage.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.massage.domain.ProductOrderInfo;
-import com.ylx.massage.domain.vo.ProductOrderDetailVo;
-import com.ylx.massage.domain.vo.ProductOrderListVo;
+import com.ylx.massage.domain.dto.ProductOrderPageDTO;
+import com.ylx.massage.domain.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +17,7 @@ public interface ProductOrderInfoMapper extends BaseMapper<ProductOrderInfo> {
     /**
      * 分页查询用户商品订单列表
      *
-     * @param page 分页参数
+     * @param page   分页参数
      * @param openId 用户openId
      * @return 订单列表
      */
@@ -27,8 +27,12 @@ public interface ProductOrderInfoMapper extends BaseMapper<ProductOrderInfo> {
      * 查询订单详情
      *
      * @param orderNo 订单编号
-     * @param openId 用户openId
+     * @param openId  用户openId
      * @return 订单详情
      */
     ProductOrderDetailVo selectProductOrderDetailByOrderNoAndOpenId(@Param("orderNo") String orderNo, @Param("openId") String openId);
+
+    Page<ProductOrderPageItemVo> adminPage(Page<ProductOrderInfo> page, @Param("dto") ProductOrderPageDTO dto);
+
+    ProductOrderCountVo getOrderTotalCount();
 }

+ 1 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/IProductOrderInfoService.java

@@ -3,7 +3,6 @@ package com.ylx.massage.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ylx.common.core.domain.R;
-import com.ylx.massage.domain.Product;
 import com.ylx.massage.domain.ProductOrderInfo;
 import com.ylx.massage.domain.dto.*;
 import com.ylx.massage.domain.vo.ProductOrderDetailVo;
@@ -61,5 +60,5 @@ public interface IProductOrderInfoService extends IService<ProductOrderInfo> {
 
     boolean cancelReturn(ProductOrderOperateDTO dto);
 
-    Page<ProductOrderPageVo> adminPage(Page<Product> page, ProductOrderPageDTO dto);
+    ProductOrderPageVo adminPage(Page<ProductOrderInfo> page, ProductOrderPageDTO dto);
 }

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/point/domain/PointActivity.java

@@ -66,7 +66,7 @@ public class PointActivity extends BaseEntity {
      * 是否长期有效 (1:是, 0:否)
      */
     @Excel(name = "是否长期有效 (1:是, 0:否)")
-    private Integer isPermanent;
+    private String isPermanent;
 
     /**
      * 过期策略id

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/point/domain/dto/PointActivityDTO.java

@@ -56,7 +56,7 @@ public class PointActivityDTO {
 
         @ApiModelProperty("是否长期有效 (1:是, 0:否)")
         @JsonProperty(value = "isPermanent")
-        private Boolean isPermanent;
+        private String isPermanent;
 
         @JsonFormat(pattern = "yyyy-MM-dd")
         @ApiModelProperty("开始时间")

+ 5 - 7
nightFragrance-massage/src/main/java/com/ylx/point/service/impl/PointActivityServiceImpl.java

@@ -2,7 +2,6 @@ package com.ylx.point.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -12,7 +11,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.exception.ServiceException;
-import com.ylx.common.exception.base.BaseException;
 import com.ylx.common.utils.DateUtils;
 import com.ylx.common.utils.SecurityUtils;
 import com.ylx.point.domain.*;
@@ -547,7 +545,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         }
 
         PointActivityDTO.ActivityTimeConfig timeConfig = dto.getTimeConfig();
-        if (ObjectUtil.isNull(timeConfig) || (!timeConfig.getIsPermanent() &&
+        if (ObjectUtil.isNull(timeConfig) || (StrUtil.isNotEmpty(timeConfig.getIsPermanent()) &&
                 (ObjectUtil.isNull(timeConfig.getStartTime()) || ObjectUtil.isNull(timeConfig.getEndTime())))) {
             throw new ServiceException("活动时间配置不能为空");
         }
@@ -563,7 +561,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         PointActivityDTO.ActivityTimeConfig timeConfig = dto.getTimeConfig();
         entity.setStartTime(DateUtil.beginOfDay(timeConfig.getStartTime()));
         entity.setEndTime(processEndTime(timeConfig.getEndTime()));
-        entity.setIsPermanent(timeConfig.getIsPermanent() ? 1 : 0);
+        entity.setIsPermanent(timeConfig.getIsPermanent());
 
         // 处理状态
         if (PointActivityStatusEnum.PUBLISHED.getCode().equals(dto.getStatus())) {
@@ -681,7 +679,7 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
         if (timeConfig != null) {
             entity.setStartTime(DateUtil.beginOfDay(timeConfig.getStartTime()));
             entity.setEndTime(processEndTime(timeConfig.getEndTime()));
-            entity.setIsPermanent(timeConfig.getIsPermanent() ? 1 : 0);
+            entity.setIsPermanent(timeConfig.getIsPermanent());
         }
 
         // 处理状态
@@ -788,8 +786,8 @@ public class PointActivityServiceImpl extends ServiceImpl<PointActivityMapper, P
     /**
      * 确定活动状态
      */
-    private Integer determineActivityStatus(Date startTime, Date endTime, Boolean isPermanent) {
-        if (isPermanent) {
+    private Integer determineActivityStatus(Date startTime, Date endTime, String isPermanent) {
+        if (StrUtil.equals(isPermanent, "1")) {
             return PointActivityStatusEnum.IN_PROGRESS.getCode();
         }
 

+ 55 - 0
nightFragrance-massage/src/main/resources/mapper/massage/ProductOrderInfoMapper.xml

@@ -92,4 +92,59 @@
         WHERE order_no = #{orderNo} AND open_id = #{openId}
     </select>
 
+    <select id="adminPage" resultType="com.ylx.massage.domain.vo.ProductOrderPageItemVo">
+        SELECT
+            oi.id,
+            oi.order_no AS orderNo,
+            oi.order_status AS orderStatus,
+            oi.pay_status AS payStatus,
+            oi.points_used AS pointsUsed,
+            oi.logistics_no AS logisticsNo,
+            oi.delivery_time AS deliveryTime,
+            oi.create_time AS createTime,
+            item.product_id,
+            item.product_name AS productName,
+            item.quantity AS quantity,
+            item.price AS price,
+            ROUND( item.price / 100, 2 ) AS payAmount,
+            oi.open_id,
+            u.c_nick_name AS nickName,
+            u.c_phone AS phone
+        FROM
+            product_order_info oi
+        LEFT JOIN product_order_item item ON oi.id = item.order_id
+        LEFT JOIN t_wx_user u ON oi.open_id = u.c_openid
+        WHERE oi.is_deleted = 0
+
+        <!-- 查询条件 -->
+        <if test="dto.orderNo != null and dto.orderNo != ''">
+            AND oi.order_no LIKE CONCAT('%', #{dto.orderNo}, '%')
+        </if>
+        <if test="dto.logisticsNo != null and dto.logisticsNo != ''">
+            AND oi.logistics_no LIKE CONCAT('%', #{dto.logisticsNo}, '%')
+        </if>
+        <if test="dto.orderStatus != null">
+            AND oi.order_status = #{dto.orderStatus}
+        </if>
+        <if test="dto.payStatus != null">
+            AND oi.pay_status = #{dto.payStatus}
+        </if>
+        <if test="dto.startTime != null and dto.endTime != null">
+            AND oi.create_time BETWEEN #{dto.startTime} AND #{dto.endTime}
+        </if>
+
+        ORDER BY oi.create_time DESC
+    </select>
+
+    <select id="getOrderTotalCount" resultType="com.ylx.massage.domain.vo.ProductOrderCountVo">
+        SELECT
+            SUM( CASE WHEN order_status = 1 THEN 1 ELSE 0 END ) AS pendingShipmentQty,
+            SUM( CASE WHEN order_status IN ( 2, 3 ) THEN 1 ELSE 0 END ) AS inProgressQty,
+            SUM( CASE WHEN order_status IN ( 5, 6, 7, 8, 9 ) THEN 1 ELSE 0 END ) AS afterSalesQty
+        FROM
+            product_order_info
+        WHERE
+            is_deleted = 0
+    </select>
+
 </mapper>