From bf2bffc884f00fd2ed2f16667ab6b91328012b8a Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期二, 01 十月 2024 11:37:34 +0800
Subject: [PATCH] 1.订单商品评论 2.订单报表sql优化
---
src/main/java/com/mzl/flower/web/v2/comment/FlowerCommentController.java | 127 ++++++
src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapper.java | 16
src/main/java/com/mzl/flower/service/payment/OrderService.java | 40 +
src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentDTO.java | 51 ++
src/main/resources/mapper/comment/FlowerCommentMapperCustom.xml | 78 ++++
src/main/java/com/mzl/flower/dto/request/comment/UpdateFlowerCommentDTO.java | 46 ++
src/main/resources/mapper/comment/FlowerCommentMapper.xml | 23 +
src/main/java/com/mzl/flower/dto/request/comment/QueryFlowerCommentDTO.java | 45 ++
src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentBatchDTO.java | 23 +
src/main/java/com/mzl/flower/service/comment/FlowerCommentService.java | 56 ++
src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapperCustom.java | 28 +
src/main/java/com/mzl/flower/service/impl/comment/FlowerCommentServiceImpl.java | 197 ++++++++++
src/main/resources/mapper/report/OrderReportMapper.xml | 168 ++++++++
src/main/java/com/mzl/flower/dto/request/report/QueryOrderDetailDTO.java | 36 +
src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java | 29 +
src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java | 2
src/main/java/com/mzl/flower/entity/FlowerCommentDO.java | 84 ++++
src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentStatisVO.java | 16
src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentVO.java | 28 +
19 files changed, 1,088 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentBatchDTO.java b/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentBatchDTO.java
new file mode 100644
index 0000000..0333715
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentBatchDTO.java
@@ -0,0 +1,23 @@
+package com.mzl.flower.dto.request.comment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+@Data
+public class CreateFlowerCommentBatchDTO {
+
+
+ @ApiModelProperty("订单ID")
+ @NotEmpty(message = "订单ID不能为空")
+ private String orderId;
+
+ @NotNull(message = "评论内容不能为空")
+ List<CreateFlowerCommentDTO> list;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentDTO.java b/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentDTO.java
new file mode 100644
index 0000000..c0db97c
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/comment/CreateFlowerCommentDTO.java
@@ -0,0 +1,51 @@
+package com.mzl.flower.dto.request.comment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class CreateFlowerCommentDTO {
+
+
+ /**
+ * 订单商品id
+ */
+ @ApiModelProperty(value = "订单商品id")
+ @NotEmpty(message = "订单id不能为空")
+ private String orderItemId;
+
+ /**
+ * 等级
+ */
+ @ApiModelProperty(value = "等级")
+ @NotNull(message = "等级不能为空")
+ @Min(value = 1,message = "最小值为5")
+ @Max(value = 5,message = "最大值为5")
+ private Integer commentGrade;
+
+ /**
+ * 内容
+ */
+ @ApiModelProperty(value = "内容")
+ @NotEmpty(message = "内容不能为空")
+ private String comment;
+
+ /**
+ * 内容图片
+ */
+ @ApiModelProperty(value = "内容图片")
+// @NotEmpty(message = "内容图片不能为空")
+ private String commentImages;
+
+ /**
+ * 匿名标志 0-非匿名 1-匿名
+ */
+ @ApiModelProperty(value = "匿名标志")
+ private Integer anonymityFalg;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/comment/QueryFlowerCommentDTO.java b/src/main/java/com/mzl/flower/dto/request/comment/QueryFlowerCommentDTO.java
new file mode 100644
index 0000000..39a8f47
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/comment/QueryFlowerCommentDTO.java
@@ -0,0 +1,45 @@
+package com.mzl.flower.dto.request.comment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class QueryFlowerCommentDTO {
+
+ @ApiModelProperty(value = "id")
+ private String id;
+
+ /**
+ * 订单id
+ */
+ @ApiModelProperty(value = "订单id")
+ private String orderId;
+
+ /**
+ * 订单商品id
+ */
+ @ApiModelProperty(value = "订单商品id")
+ private String orderItemId;
+
+ /**
+ * 商户id
+ */
+ @ApiModelProperty(value = "商户ID")
+ private Long customerId;
+
+ /**
+ * 供应商Id
+ */
+ @ApiModelProperty(value = "供应商Id")
+ private Long supplierId;
+
+ /**
+ * 商品id
+ */
+ @ApiModelProperty(value = "商品id")
+ private Long flowerId;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/comment/UpdateFlowerCommentDTO.java b/src/main/java/com/mzl/flower/dto/request/comment/UpdateFlowerCommentDTO.java
new file mode 100644
index 0000000..e0922d7
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/comment/UpdateFlowerCommentDTO.java
@@ -0,0 +1,46 @@
+package com.mzl.flower.dto.request.comment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
+@Data
+public class UpdateFlowerCommentDTO {
+
+ @ApiModelProperty(value = "id")
+ private String id;
+
+ /**
+ * 等级
+ */
+ @ApiModelProperty(value = "等级")
+ @NotNull(message = "等级不能为空")
+ @Min(value = 1,message = "最小值为5")
+ @Max(value = 5,message = "最大值为5")
+ private Integer commentGrade;
+
+ /**
+ * 内容
+ */
+ @ApiModelProperty(value = "内容")
+ @NotEmpty(message = "内容不能为空")
+ private String comment;
+
+ /**
+ * 内容图片
+ */
+ @ApiModelProperty(value = "内容图片")
+// @NotEmpty(message = "内容图片不能为空")
+ private String commentImages;
+
+ /**
+ * 匿名标志 0-非匿名 1-匿名
+ */
+ @ApiModelProperty(value = "匿名标志")
+ private Integer anonymityFalg;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java
index e55da06..a6fb34e 100644
--- a/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDTO.java
@@ -30,7 +30,7 @@
@ApiModelProperty(value = "下单日期")
@JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd")
- @NotNull(message = "下单日期不能为空")
+// @NotNull(message = "下单日期不能为空")
private LocalDate calDate;
}
diff --git a/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDetailDTO.java b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDetailDTO.java
new file mode 100644
index 0000000..f5352d5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/report/QueryOrderDetailDTO.java
@@ -0,0 +1,36 @@
+package com.mzl.flower.dto.request.report;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Data
+public class QueryOrderDetailDTO {
+
+ @ApiModelProperty(value = "开始时间")
+ @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss" ,timezone="GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ @NotNull(message = "开始时间不能为空")
+ private LocalDateTime startDate;
+
+ @ApiModelProperty(value = "结束时间")
+ @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss" ,timezone="GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+ @NotNull(message = "结束时间不能为空")
+ private LocalDateTime endDate;
+
+ @ApiModelProperty(value = "合伙人id")
+ private Long partnerId;
+
+ @ApiModelProperty(value = "下单日期")
+ @JsonFormat(pattern="yyyy-MM-dd" ,timezone="GMT+8")
+ @DateTimeFormat(pattern="yyyy-MM-dd")
+ @NotNull(message = "下单日期不能为空")
+ private LocalDate calDate;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentStatisVO.java b/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentStatisVO.java
new file mode 100644
index 0000000..a72091b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentStatisVO.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.dto.response.comment;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class FlowerCommentStatisVO {
+
+ @ApiModelProperty(value = "平均分")
+ private BigDecimal avg;
+
+ @ApiModelProperty(value = "评论总数")
+ private Integer commentAmount;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentVO.java b/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentVO.java
new file mode 100644
index 0000000..47d7adb
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/comment/FlowerCommentVO.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.dto.response.comment;
+
+import com.mzl.flower.entity.FlowerCommentDO;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class FlowerCommentVO extends FlowerCommentDO {
+
+ @ApiModelProperty(value = "商品名称")
+ private String flowerName;
+ @ApiModelProperty(value = "商品规格")
+ private String flowerUnit;
+ @ApiModelProperty(value = "商品颜色")
+ private String flowerColor;
+ @ApiModelProperty(value = "商品等级")
+ private String flowerLevel;
+ @ApiModelProperty(value = "商品类别")
+ private String flowerCategory;
+ @ApiModelProperty(value = "商户名称")
+ private String customerName;
+ @ApiModelProperty(value = "商户头像")
+ private String customerCover;
+
+
+
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
index cef30f4..13b8d5f 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
@@ -5,6 +5,10 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
@@ -81,4 +85,29 @@
@ApiModelProperty(value = "供应商ID")
private Long supplierId;//商品id
+ /**
+ * 等级
+ */
+ @ApiModelProperty(value = "等级")
+ private Integer commentGrade;
+
+ /**
+ * 内容
+ */
+ @ApiModelProperty(value = "内容")
+ private String comment;
+
+ /**
+ * 内容图片
+ */
+ @ApiModelProperty(value = "内容图片")
+ private String commentImages;
+
+ /**
+ * 匿名标志 0-非匿名 1-匿名
+ */
+ @ApiModelProperty(value = "匿名标志")
+ private Integer anonymityFalg;
+
+
}
diff --git a/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java b/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java
new file mode 100644
index 0000000..e14b0cb
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/FlowerCommentDO.java
@@ -0,0 +1,84 @@
+package com.mzl.flower.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mzl.flower.base.BaseEntity;
+import java.sql.Blob;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * 商品评论表
+ *
+ * @author @TaoJie
+ * @since 2024-09-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("t_flower_comment")
+public class FlowerCommentDO extends BaseEntity {
+
+
+ /**
+ * 订单id
+ */
+ private String orderId;
+
+ /**
+ * 订单商品id
+ */
+ private String orderItemId;
+
+ /**
+ * 商户id
+ */
+ private Long customerId;
+
+ /**
+ * 商户用户ID
+ */
+ private String customerUserId;
+
+ /**
+ * 供应商Id
+ */
+ private Long supplierId;
+
+ /**
+ * 供应商用户Id
+ */
+ private String supplierUserId;
+
+ /**
+ * 商品id
+ */
+ private Long flowerId;
+
+ /**
+ * 商品图片
+ */
+ private String flowerCover;
+
+ /**
+ * 等级
+ */
+ private Integer commentGrade;
+
+ /**
+ * 内容
+ */
+ private String comment;
+
+ /**
+ * 内容图片
+ */
+ private String commentImages;
+
+ /**
+ * 匿名标志 0-非匿名 1-匿名
+ */
+ private Integer anonymityFalg;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapper.java b/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapper.java
new file mode 100644
index 0000000..9f42a49
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapper.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.mapper.comment;
+
+import com.mzl.flower.entity.FlowerCommentDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 商品评论表 Mapper 接口
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-29
+ */
+public interface FlowerCommentMapper extends BaseMapper<FlowerCommentDO> {
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapperCustom.java b/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapperCustom.java
new file mode 100644
index 0000000..d77771c
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/comment/FlowerCommentMapperCustom.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.mapper.comment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO;
+import com.mzl.flower.dto.response.comment.FlowerCommentVO;
+import com.mzl.flower.entity.FlowerCommentDO;
+import org.apache.ibatis.annotations.Param;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 商品评论表 Mapper 接口
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-29
+ */
+public interface FlowerCommentMapperCustom extends BaseMapper<FlowerCommentDO> {
+
+ List<FlowerCommentVO> getPage(Page page,@Param("param") QueryFlowerCommentDTO dto);
+
+ List<FlowerCommentVO> getList(@Param("param") QueryFlowerCommentDTO dto);
+
+ BigDecimal getSupplierAvgScore(@Param("supplierId") Long supplierId);
+}
diff --git a/src/main/java/com/mzl/flower/service/comment/FlowerCommentService.java b/src/main/java/com/mzl/flower/service/comment/FlowerCommentService.java
new file mode 100644
index 0000000..a159e54
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/comment/FlowerCommentService.java
@@ -0,0 +1,56 @@
+package com.mzl.flower.service.comment;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentBatchDTO;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.UpdateFlowerCommentDTO;
+import com.mzl.flower.dto.response.comment.FlowerCommentStatisVO;
+import com.mzl.flower.dto.response.comment.FlowerCommentVO;
+import com.mzl.flower.entity.FlowerCommentDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 商品评论表 服务类
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-29
+ */
+public interface FlowerCommentService extends IService<FlowerCommentDO> {
+
+ boolean createFlowerComment(CreateFlowerCommentDTO dto);
+
+ boolean updateFlowerComment(UpdateFlowerCommentDTO dto);
+
+ boolean deleteFlowerComment(String id);
+
+ FlowerCommentVO getDetailById(String id);
+
+ Page<FlowerCommentVO> getPage(Page page, QueryFlowerCommentDTO dto);
+
+ List<FlowerCommentVO> getList(QueryFlowerCommentDTO dto);
+
+ FlowerCommentVO getByOrderItemId(String orderItemId);
+
+
+ /**
+ * 获取供应商的评论平均分
+ * @param supplierId 供应商
+ * @return
+ */
+ BigDecimal getSupplierAvgScore(Long supplierId);
+
+ /**
+ * 订单下所有商品的评论
+ * @param dto
+ * @return
+ */
+ boolean createFlowerCommentBatch(CreateFlowerCommentBatchDTO dto);
+
+ FlowerCommentStatisVO getSupplierStatis(Long id);
+}
diff --git a/src/main/java/com/mzl/flower/service/impl/comment/FlowerCommentServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/comment/FlowerCommentServiceImpl.java
new file mode 100644
index 0000000..f0982c1
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/impl/comment/FlowerCommentServiceImpl.java
@@ -0,0 +1,197 @@
+package com.mzl.flower.service.impl.comment;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentBatchDTO;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.UpdateFlowerCommentDTO;
+import com.mzl.flower.dto.response.comment.FlowerCommentStatisVO;
+import com.mzl.flower.dto.response.comment.FlowerCommentVO;
+import com.mzl.flower.entity.FlowerCommentDO;
+import com.mzl.flower.entity.customer.Customer;
+import com.mzl.flower.entity.payment.Order;
+import com.mzl.flower.entity.payment.OrderItem;
+import com.mzl.flower.entity.supplier.Supplier;
+import com.mzl.flower.mapper.comment.FlowerCommentMapper;
+import com.mzl.flower.mapper.comment.FlowerCommentMapperCustom;
+import com.mzl.flower.mapper.customer.CustomerMapper;
+import com.mzl.flower.mapper.payment.OrderItemMapper;
+import com.mzl.flower.mapper.payment.OrderMapper;
+import com.mzl.flower.mapper.supplier.SupplierMapper;
+import com.mzl.flower.service.comment.FlowerCommentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * <p>
+ * 商品评论表 服务实现类
+ * </p>
+ *
+ * @author @TaoJie
+ * @since 2024-09-29
+ */
+@Service
+public class FlowerCommentServiceImpl extends ServiceImpl<FlowerCommentMapper, FlowerCommentDO> implements FlowerCommentService {
+
+ @Autowired
+ private FlowerCommentMapperCustom flowerCommentMapperCustom;
+
+ @Autowired
+ private OrderItemMapper orderItemMapper;
+
+ @Autowired
+ private SupplierMapper supplierMapper;
+
+ @Autowired
+ private CustomerMapper customerMapper;
+
+ @Autowired
+ private OrderMapper orderMapper;
+
+
+ @Transactional
+ @Override
+ public boolean createFlowerComment(CreateFlowerCommentDTO dto) {
+ final FlowerCommentVO byOrderItemId = getByOrderItemId(dto.getOrderItemId());
+ if(null!=byOrderItemId){
+ throw new ValidationException("当前商品已经评论过!");
+ }
+
+ FlowerCommentDO flowerCommentDO=new FlowerCommentDO();
+ BeanUtils.copyProperties(dto,flowerCommentDO);
+ flowerCommentDO.setId(IdUtil.simpleUUID());
+ flowerCommentDO.create(SecurityUtils.getUserId());
+
+ final OrderItem orderItem = orderItemMapper.selectById(dto.getOrderItemId());
+ if(null==orderItem){
+ throw new ValidationException("当前订单项目不存在!");
+ }
+ flowerCommentDO.setOrderId(orderItem.getOrderId());
+ flowerCommentDO.setCustomerUserId(orderItem.getCreateBy());
+ flowerCommentDO.setSupplierId(orderItem.getSupplierId());
+ flowerCommentDO.setFlowerId(orderItem.getFlowerId());
+ flowerCommentDO.setFlowerCover(orderItem.getFlowerCover());
+
+ // 补充商户信息
+ Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>()
+ .eq("user_id", orderItem.getCreateBy()));
+ if(null!=customer && null!=customer.getId()){
+ flowerCommentDO.setCustomerId(customer.getId());
+ }
+
+
+ // 补充供应商信息
+ Supplier supplier = supplierMapper.selectById(orderItem.getSupplierId());
+ if(null!=supplier && StringUtils.isNotBlank(supplier.getUserId())){
+ flowerCommentDO.setSupplierUserId(supplier.getUserId());
+ }
+ return baseMapper.insert(flowerCommentDO)>0;
+ }
+
+ @Transactional
+ @Override
+ public boolean updateFlowerComment(UpdateFlowerCommentDTO dto) {
+ FlowerCommentDO flowerCommentDO=baseMapper.selectById(dto.getId());
+ BeanUtils.copyProperties(dto,flowerCommentDO);
+ flowerCommentDO.update(SecurityUtils.getUserId());
+
+ return baseMapper.updateById(flowerCommentDO)>0;
+ }
+
+ @Override
+ public boolean deleteFlowerComment(String id) {
+ return baseMapper.deleteById(id)>0;
+ }
+
+ @Override
+ public FlowerCommentVO getDetailById(String id) {
+ QueryFlowerCommentDTO dto=new QueryFlowerCommentDTO();
+ dto.setId(id);
+ final List<FlowerCommentVO> list = getList(dto);
+ if(CollectionUtils.isNotEmpty(list)){
+ return list.get(0);
+ }
+ return null;
+ }
+
+ @Override
+ public Page<FlowerCommentVO> getPage(Page page, QueryFlowerCommentDTO dto) {
+ List<FlowerCommentVO> list=flowerCommentMapperCustom.getPage(page,dto);
+ return page.setRecords(list);
+ }
+
+ @Override
+ public List<FlowerCommentVO> getList(QueryFlowerCommentDTO dto) {
+ return flowerCommentMapperCustom.getList(dto);
+ }
+
+ @Override
+ public FlowerCommentVO getByOrderItemId(String orderItemId) {
+ QueryFlowerCommentDTO dto=new QueryFlowerCommentDTO();
+ dto.setOrderItemId(orderItemId);
+ final List<FlowerCommentVO> list = getList(dto);
+ if(CollectionUtils.isNotEmpty(list)){
+ return list.get(0);
+ }
+ return null;
+ }
+
+ @Override
+ public BigDecimal getSupplierAvgScore(Long supplierId) {
+ return flowerCommentMapperCustom.getSupplierAvgScore(supplierId);
+ }
+
+ @Transactional
+ @Override
+ public boolean createFlowerCommentBatch(CreateFlowerCommentBatchDTO dto) {
+ if(CollectionUtils.isNotEmpty(dto.getList())){
+ dto.getList().forEach(item->{
+ // 保存评论信息
+ final FlowerCommentVO byOrderItemId = getByOrderItemId(item.getOrderItemId());
+ if(null!=byOrderItemId){
+ // 更新
+ UpdateFlowerCommentDTO updateFlowerCommentDTO=new UpdateFlowerCommentDTO();
+ BeanUtils.copyProperties(item,updateFlowerCommentDTO);
+ updateFlowerCommentDTO.setId(byOrderItemId.getId());
+ updateFlowerComment(updateFlowerCommentDTO);
+ }else{
+ createFlowerComment(item);
+ }
+
+ });
+ // 设置订单的评论状态为评论的下个阶段
+ Order order=orderMapper.selectById(dto.getOrderId());
+
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public FlowerCommentStatisVO getSupplierStatis(Long supplierId) {
+ FlowerCommentStatisVO vo=new FlowerCommentStatisVO();
+
+ // 获取平均分
+ final BigDecimal supplierAvgScore = flowerCommentMapperCustom.getSupplierAvgScore(supplierId);
+ vo.setAvg(supplierAvgScore);
+
+ //当前商家评论总数
+ final Integer amount = baseMapper.selectCount(new QueryWrapper<FlowerCommentDO>().lambda().eq(FlowerCommentDO::getSupplierId, supplierId));
+ vo.setCommentAmount(amount);
+ return vo;
+ }
+
+
+}
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index e1aebd0..47f3acb 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -12,8 +12,10 @@
import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.constant.Constants;
import com.mzl.flower.dto.PriceDTO;
+import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO;
import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO;
import com.mzl.flower.dto.request.payment.*;
+import com.mzl.flower.dto.response.comment.FlowerCommentVO;
import com.mzl.flower.dto.response.coupon.CouponRecordVO;
import com.mzl.flower.dto.response.flower.FlowerCartListDTO;
import com.mzl.flower.dto.response.flower.FlowerCartListWrapDTO;
@@ -43,6 +45,7 @@
import com.mzl.flower.mapper.system.UserWechatMapper;
import com.mzl.flower.mapper.warehouse.WarehouseLocationMapper;
import com.mzl.flower.service.BaseService;
+import com.mzl.flower.service.comment.FlowerCommentService;
import com.mzl.flower.service.coupon.CouponRecordService;
import com.mzl.flower.service.flower.FlowerService;
import com.mzl.flower.service.menber.MemberGrowthRecordService;
@@ -164,6 +167,9 @@
@Autowired
private CouponRecordService couponRecordService;
+ @Autowired
+ private FlowerCommentService flowerCommentService;
+
public void changeFlower2Cart(CartSaveDTO dto) {
String userId = SecurityUtils.getUserId();
@@ -196,7 +202,7 @@
Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId());
Integer tmp=completeNumToday+c.getNum();
if(null!=tmp && null!=flowerDetail.getLimited()
- && tmp.compareTo(flowerDetail.getLimited())>0){
+ && tmp.compareTo(flowerDetail.getLimited())>0){
throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!");
}
@@ -208,7 +214,7 @@
// 限购 1.首先查看购物车中的数量是否已经超过限售数量
if(null!=c.getNum() && null!=flowerDetail.getLimited()
- && c.getNum().compareTo(flowerDetail.getLimited())>0){
+ && c.getNum().compareTo(flowerDetail.getLimited())>0){
throw new ValidationException("数量不能超过限售数量!");
}
@@ -216,7 +222,7 @@
Integer completeNumToday=getFlowerCompleteNumToday(userId,c.getFlowerId());
Integer tmp=completeNumToday+c.getNum();
if(null!=tmp && null!=flowerDetail.getLimited()
- && tmp.compareTo(flowerDetail.getLimited())>0){
+ && tmp.compareTo(flowerDetail.getLimited())>0){
throw new ValidationException("当天的订单的花数量加上购物车的数量不能超过限售数量!");
}
@@ -1135,6 +1141,7 @@
new QueryWrapper<OrderItem>().eq("order_id", id));
Map<Long, String> stationMap = prepareStationMap();
+ Map<String, FlowerCommentVO> commentMap=prepareCommentMap(id);
List<OrderItemListDTO> result = new ArrayList<>();
for (OrderItem oi : ls) {
@@ -1143,10 +1150,35 @@
dto.setStationName(stationMap.get(oi.getStationId()));
+ // 评论
+ final FlowerCommentVO flowerCommentVO = commentMap.get(oi.getId());
+ copyCommentInfo(dto,flowerCommentVO);
+
result.add(dto);
}
return result;
+ }
+
+ private Map<String, FlowerCommentVO> prepareCommentMap(String orderId) {
+ QueryFlowerCommentDTO queryFlowerCommentDTO = new QueryFlowerCommentDTO();
+ queryFlowerCommentDTO.setOrderId(orderId);
+ final List<FlowerCommentVO> list = flowerCommentService.getList(queryFlowerCommentDTO);
+ if (list == null || list.isEmpty()) {
+ return Collections.emptyMap();
+ }
+ // 将 List 转换为 Map,其中 key 为 FlowerCommentVO 的 id
+ return list.stream().collect(Collectors.toMap(FlowerCommentVO::getOrderItemId, item -> item));
+ }
+
+
+ private void copyCommentInfo(OrderItemListDTO dto,FlowerCommentVO flowerCommentVO){
+ if(null != dto && null!=flowerCommentVO){
+ dto.setCommentGrade(flowerCommentVO.getCommentGrade());
+ dto.setComment(flowerCommentVO.getComment());
+ dto.setCommentImages(flowerCommentVO.getCommentImages());
+ dto.setAnonymityFalg(flowerCommentVO.getAnonymityFalg());
+ }
}
public List<Order> autoReceive() {
@@ -1678,7 +1710,7 @@
// 新增
cartMapper.updateById(cart);
}else{
- // 更新
+ // 更新
cartMapper.insert(cart);
}
}
diff --git a/src/main/java/com/mzl/flower/web/v2/comment/FlowerCommentController.java b/src/main/java/com/mzl/flower/web/v2/comment/FlowerCommentController.java
new file mode 100644
index 0000000..4574f21
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/v2/comment/FlowerCommentController.java
@@ -0,0 +1,127 @@
+package com.mzl.flower.web.v2.comment;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentBatchDTO;
+import com.mzl.flower.dto.request.comment.CreateFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.QueryFlowerCommentDTO;
+import com.mzl.flower.dto.request.comment.UpdateFlowerCommentDTO;
+import com.mzl.flower.dto.response.comment.FlowerCommentVO;
+import com.mzl.flower.dto.response.coupon.CouponTemplatePointVO;
+import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
+import com.mzl.flower.service.comment.FlowerCommentService;
+import com.mzl.flower.utils.ConverterUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import com.mzl.flower.entity.FlowerCommentDO;
+
+
+/**
+ * 商品评论表前端控制器
+ *
+* @author @TaoJie
+* @since 2024-09-29
+*/
+@RestController
+@RequestMapping("/api/v2/flower-comment")
+@Api(value = "商品评论", tags = "商品评论")
+@Validated
+public class FlowerCommentController extends BaseController {
+
+ @Autowired
+ private FlowerCommentService flowerCommentService;
+
+ @PostMapping("")
+ @ApiOperation(value = "新增", notes = "新增")
+ public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateFlowerCommentDTO dto) {
+
+ // 信息验证
+ valid(dto);
+ flowerCommentService.createFlowerComment(dto);
+ return returnData(R.SUCCESS.getCode(), null);
+
+
+ }
+
+ @PostMapping("/batch")
+ @ApiOperation(value = "批量新增", notes = "批量新增")
+ public ResponseEntity<ReturnDataDTO> createBatch(@Validated @RequestBody CreateFlowerCommentBatchDTO dto) {
+
+ //
+ flowerCommentService.createFlowerCommentBatch(dto);
+ return returnData(R.SUCCESS.getCode(), null);
+
+
+ }
+
+ @PutMapping("/{id}")
+ @ApiOperation(value = "修改", notes = "修改")
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody UpdateFlowerCommentDTO dto) {
+
+ // 手动设置id值
+ dto.setId(id);
+ flowerCommentService.updateFlowerComment(dto);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @DeleteMapping("/{id}")
+ @ApiOperation(value = "删除", notes = "删除")
+ public ResponseEntity<ReturnDataDTO> delete(@PathVariable String id) {
+
+ FlowerCommentDO flowerCommentDO = flowerCommentService.getById(id);
+ if (null == flowerCommentDO) {
+ throw new ValidationException("评论不存在");
+ }
+ flowerCommentService.deleteFlowerComment(id);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
+ @GetMapping("/{id}")
+ @ApiOperation(value = "详情", notes = "详情")
+ public ResponseEntity<ReturnDataDTO> get(@PathVariable String id) {
+ FlowerCommentVO flowerCommentVO = flowerCommentService.getDetailById(id);
+ return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(flowerCommentVO, FlowerCommentVO.class));
+ }
+
+ @GetMapping("/page")
+ @ApiOperation(value = "查询-分页", notes = "查询-分页")
+ public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page(Page page, QueryFlowerCommentDTO dto) {
+ // 设置只查询活动优惠券的
+
+ Page<FlowerCommentVO> resultPage = flowerCommentService.getPage(page, dto);
+ return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, FlowerCommentVO.class));
+ }
+
+ @GetMapping("/list")
+ @ApiOperation(value = "查询-全部", notes = "查询-全部")
+ public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryFlowerCommentDTO dto) {
+ // 设置只查询活动优惠券的
+
+ return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(flowerCommentService.getList(dto), FlowerCommentVO.class));
+ }
+
+ @GetMapping("/avg/{id}")
+ @ApiOperation(value = "平均分", notes = "平均分")
+ public ResponseEntity<ReturnDataDTO> getCommentAvg(@PathVariable Long id) {
+ return returnData(R.SUCCESS.getCode(), flowerCommentService.getSupplierAvgScore(id));
+ }
+
+ @GetMapping("/statis/{id}")
+ @ApiOperation(value = "统计", notes = "统计")
+ public ResponseEntity<ReturnDataDTO> getStatis(@PathVariable Long id) {
+ return returnData(R.SUCCESS.getCode(), flowerCommentService.getSupplierStatis(id));
+ }
+
+ private void valid(CreateFlowerCommentDTO dto){
+
+ }
+
+}
diff --git a/src/main/resources/mapper/comment/FlowerCommentMapper.xml b/src/main/resources/mapper/comment/FlowerCommentMapper.xml
new file mode 100644
index 0000000..18ffb07
--- /dev/null
+++ b/src/main/resources/mapper/comment/FlowerCommentMapper.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.comment.FlowerCommentMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.mzl.flower.entity.FlowerCommentDO">
+ <id column="id" property="id" />
+ <result column="deleted" property="deleted" />
+ <result column="create_by" property="createBy" />
+ <result column="create_time" property="createTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="order_id" property="orderId" />
+ <result column="customer_id" property="customerId" />
+ <result column="flower_id" property="flowerId" />
+ <result column="flower_cover" property="flowerCover" />
+ <result column="comment_grade" property="commentGrade" />
+ <result column="comment" property="comment" />
+ <result column="comment_images" property="commentImages" />
+ <result column="anonymity_falg" property="anonymityFalg" />
+ </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/comment/FlowerCommentMapperCustom.xml b/src/main/resources/mapper/comment/FlowerCommentMapperCustom.xml
new file mode 100644
index 0000000..1b53dd8
--- /dev/null
+++ b/src/main/resources/mapper/comment/FlowerCommentMapperCustom.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.mzl.flower.mapper.comment.FlowerCommentMapperCustom">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.mzl.flower.entity.FlowerCommentDO">
+ <id column="id" property="id" />
+ <result column="deleted" property="deleted" />
+ <result column="create_by" property="createBy" />
+ <result column="create_time" property="createTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="order_id" property="orderId" />
+ <result column="order_item_id" property="orderItemId" />
+
+ <result column="customer_id" property="customerId" />
+ <result column="customer_user_id" property="customerUserId" />
+ <result column="supplier_id" property="supplierId" />
+ <result column="supplier_user_id" property="supplierUserId" />
+
+ <result column="flower_id" property="flowerId" />
+ <result column="flower_cover" property="flowerCover" />
+ <result column="comment_grade" property="commentGrade" />
+ <result column="comment" property="comment" />
+ <result column="comment_images" property="commentImages" />
+ <result column="anonymity_falg" property="anonymityFalg" />
+ </resultMap>
+ <select id="getPage" resultType="com.mzl.flower.dto.response.comment.FlowerCommentVO">
+ <include refid="baseSql" />
+ </select>
+ <select id="getList" resultType="com.mzl.flower.dto.response.comment.FlowerCommentVO">
+ <include refid="baseSql" />
+ </select>
+ <select id="getSupplierAvgScore" resultType="java.math.BigDecimal">
+ SELECT
+ COALESCE(ROUND(SUM(c.comment_grade) / NULLIF(COUNT(1), 0), 1), 0) AS average_grade
+ FROM t_flower_comment c
+ WHERE c.deleted = false
+ AND c.supplier_id = #{supplierId}
+ </select>
+
+ <sql id="baseSql">
+ select c.*,
+ oi.flower_name,
+ oi.flower_unit,
+ oi.flower_color,
+ oi.flower_level,
+ oi.flower_category,
+ ci.name as customer_name,
+ ci.cover as customer_cover
+ from t_flower_comment c
+ left join t_order_item oi
+ on c.order_item_id=oi.id
+ left join t_customer_info ci
+ on c.customer_id=ci.id
+ where c.deleted=false
+ <if test="param.id != null and param.id != ''">
+ and c.id = #{param.id}
+ </if>
+ <if test="param.orderId != null and param.orderId != ''">
+ and c.order_id = #{param.orderId}
+ </if>
+ <if test="param.orderItemId != null and param.orderItemId != ''">
+ and c.order_item_id = #{param.orderItemId}
+ </if>
+ <if test="param.customerId != null ">
+ and c.customer_id = #{param.customerId}
+ </if>
+ <if test="param.supplierId != null">
+ and c.supplier_id = #{param.supplierId}
+ </if>
+ <if test="param.flowerId != null">
+ and c.flower_id = #{param.flowerId}
+ </if>
+
+ </sql>
+
+</mapper>
diff --git a/src/main/resources/mapper/report/OrderReportMapper.xml b/src/main/resources/mapper/report/OrderReportMapper.xml
index d4171f4..ea1e697 100644
--- a/src/main/resources/mapper/report/OrderReportMapper.xml
+++ b/src/main/resources/mapper/report/OrderReportMapper.xml
@@ -4,6 +4,57 @@
<select id="getOrderDateReport" resultType="com.mzl.flower.dto.response.report.OrderReportResultVO">
select
+ sum(order_total) as order_total,
+ sum(order_supplier_price_amount) as order_supplier_price_amount,
+ sum(order_markup_one_amount) as order_markup_one_amount,
+ sum(order_markup_two_amount) as order_markup_two_amount,
+ sum(order_markup_partner_amount) as order_markup_partner_amount,
+ sum(order_price_discount_amount) as order_price_discount_amount,
+ sum(order_coupon_amount_total) as order_coupon_amount_total,
+ sum(order_check_fee) as order_check_fee,
+ sum(order_lack_fee_supplier) as order_lack_fee_supplier,
+ sum(order_replace_fee) as order_replace_fee,
+ sum(order_fee_supplier) as order_fee_supplier,
+ sum(order_fee_partner) as order_fee_partner,
+ sum(order_fee_platform) as order_fee_platform,
+ sum(order_fee_platform_pack) as order_fee_platform_pack,
+ sum(order_fee_platform_check) as order_fee_platform_check,
+ sum(order_fee_platform_transport) as order_fee_platform_transport,
+ sum(order_total_fee) as order_total_fee,
+ sum(order_fee_packing_transport) as order_fee_packing_transport,
+ sum(order_num) as order_num,
+ sum(order_replace_num) as order_replace_num,
+ sum(order_reduce_num) as order_reduce_num,
+ sum(order_lack_num) as order_lack_num,
+ sum(order_num)-sum(order_lack_num) as real_sale_num
+ from (
+ select
+ o.order_no,o.payment_time,o.status_backend,vor.*
+ from t_order o
+ left join (
+ <include refid="baseSql"></include>
+ ) vor
+ on o.id =vor.order_id
+ where o.deleted=0
+ and o.status_backend not in ('PENDING','CANCEL','REFUND')
+ <if test="dto.startDate != null">
+ and o.payment_time > #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and o.payment_time <= #{dto.endDate}
+ </if>
+ <if test="dto.partnerId != null">
+ and o.create_by in (
+ select user_id from t_customer_info where partner_id=#{dto.partnerId}
+ )
+ </if>
+ ) t
+
+ </select>
+
+
+ <select id="getOrderDateReport2" resultType="com.mzl.flower.dto.response.report.OrderReportResultVO">
+ select
sum(order_total) as order_total,
sum(order_supplier_price_amount) as order_supplier_price_amount,
sum(order_markup_one_amount) as order_markup_one_amount,
@@ -62,6 +113,37 @@
vor.order_num-vor.order_lack_num as real_sale_num,
vor.*
from t_order o
+ left join (
+ <include refid="baseSql"></include>
+ ) vor
+ on o.id =vor.order_id
+ where o.deleted=0
+ and o.status_backend not in ('PENDING','CANCEL','REFUND')
+ <if test="dto.startDate != null">
+ and o.payment_time > #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and o.payment_time <= #{dto.endDate}
+ </if>
+ <if test="dto.partnerId != null">
+ and o.create_by in (
+ select user_id from t_customer_info where partner_id=#{dto.partnerId}
+ )
+ </if>
+ </select>
+
+ <select id="getOrderDetailReport2" resultType="com.mzl.flower.dto.response.report.OrderDetailReportResultVO">
+ select
+ o.order_no,
+ o.customer,
+ CONCAT( o.customer_province, ' ', o.customer_city, ' ', o.customer_region, ' ', o.customer_address ) AS address,
+ o.partner_name,
+ o.create_time as orderDate,
+ o.payment_time,
+ o.status_backend as settleStatus,
+ vor.order_num-vor.order_lack_num as real_sale_num,
+ vor.*
+ from t_order o
left join v_order_report vor
on o.id =vor.order_id
where o.deleted=0
@@ -79,4 +161,90 @@
</if>
</select>
+
+ <sql id="baseSql">
+ select t2.*,
+ IFNULL(t3.fee_supplier,0) as order_fee_supplier,
+ IFNULL(t3.fee_partner,0) as order_fee_partner,
+ IFNULL(t3.fee_platform,0) as order_fee_platform,
+ IFNULL(t3.fee_platform_pack,0) as order_fee_platform_pack,
+ IFNULL(t3.fee_platform_check,0) as order_fee_platform_check,
+ IFNULL(t3.fee_platform_transport,0) as order_fee_platform_transport,
+ IFNULL(t3.total_fee,0) as order_total_fee,
+ IFNULL(t3.fee_packing_transport,0) as order_fee_packing_transport
+ from (
+ select
+ t1.order_id,sum(t1.num) as order_num , sum(t1.total) as order_total, sum(t1.supplier_price_amount) as order_supplier_price_amount, sum(t1.markup_one_amount) as order_markup_one_amount,sum(t1.markup_two_amount) as order_markup_two_amount, sum(t1.markup_partner_amount) as order_markup_partner_amount,sum(t1.price_amount) as order_price_amount,sum(t1.original_price_amount) as order_original_price_amount,sum(t1.price_discount_amount) as order_price_discount_amount,sum(t1.coupon_amount_total) as order_coupon_amount_total,sum(t1.check_fee) as order_check_fee,sum(t1.lack_fee_supplier) as order_lack_fee_supplier,sum(t1.replace_fee) as order_replace_fee,
+ sum(replace_num) as order_replace_num,sum(reduce_num) as order_reduce_num,sum(lack_num) as order_lack_num
+ from (
+ SELECT
+ oi.order_id,
+ oi.id,
+ IFNULL(oi.num,0) as num,
+ IFNULL(oi.total,0) as total,
+ IFNULL(oi.supplier_price,0) as supplier_price,
+ IFNULL(oi.supplier_price,0) * IFNULL(oi.num,0) as supplier_price_amount,
+
+ IFNULL(oi.markup_one,0) as markup_one,
+ IFNULL(oi.markup_one,0)* IFNULL(oi.num,0) as markup_one_amount,
+
+ IFNULL(oi.markup_two,0) as markup_two,
+ IFNULL(oi.markup_two,0)* IFNULL(oi.num,0) as markup_two_amount,
+
+ IFNULL(oi.markup_partner,0) as markup_partner,
+ IFNULL(oi.markup_partner,0)* IFNULL(oi.num,0) as markup_partner_amount,
+ IFNULL(oi.price,0) as price,
+ IFNULL(oi.price,0)* IFNULL(oi.num,0) as price_amount,
+
+ IFNULL(oi.original_price,0) as original_price,
+ IFNULL(oi.original_price,0)*IFNULL(oi.num,0) as original_price_amount,
+
+ IFNULL(oi.original_price,0)*IFNULL(oi.num,0) - IFNULL(oi.price,0)* IFNULL(oi.num,0) as price_discount_amount,
+
+
+ IFNULL(oi.real_price,0) as real_price,
+ IFNULL(oi.real_total,0) as real_total,
+
+ IFNULL(oi.coupon_amount_total,0) as coupon_amount_total,
+
+ IFNULL(ois.check_fee,0) as check_fee,
+ IFNULL(ois.lack_fee_supplier,0) as lack_fee_supplier,
+ IFNULL(ois.replace_fee,0) as replace_fee
+
+ ,IFNULL( (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'replace'),0) as replace_num
+ ,IFNULL( (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'reduce'),0) as reduce_num
+ ,IFNULL( (select oic.num from t_order_item_check oic where oic.order_item_id = oi.id and oic.type = 'lack'),0) as lack_num
+ FROM t_order o
+ left join t_order_item oi
+ on oi.order_id=o.id
+ left join t_station s on s.id = oi.station_id
+ left join t_supplier_info si on si.id = oi.supplier_id
+ left join t_order_item_settlement ois on ois.order_item_id = oi.id
+ WHERE oi.deleted = 0
+ <if test="dto.startDate != null">
+ and o.payment_time > #{dto.startDate}
+ </if>
+ <if test="dto.endDate != null">
+ and o.payment_time <= #{dto.endDate}
+ </if>
+ )t1
+ group by order_id
+ ) t2
+ left join (
+ select
+ ois.order_id,
+ IFNULL(sum(ois.fee_supplier),0) as fee_supplier,
+ IFNULL(sum(ois.fee_partner),0) as fee_partner,
+ IFNULL(sum(ois.fee_platform),0) as fee_platform,
+ IFNULL(sum(ois.fee_platform_pack),0) as fee_platform_pack,
+ IFNULL(sum(ois.fee_platform_check),0) as fee_platform_check,
+ IFNULL(sum(ois.fee_platform_transport),0) as fee_platform_transport,
+ IFNULL(sum(ois.total_fee),0) as total_fee,
+ IFNULL(sum(ois.fee_packing_transport),0) as fee_packing_transport
+ from t_order_item_sales ois
+ group by order_id
+ )t3
+ on t2.order_id =t3.order_id
+ </sql>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3