Bladeren bron

推广AI会员订单数据

zoujiajian 1 jaar geleden
bovenliggende
commit
a4bdd52b82

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/vip/VipOrderDonMapper.java

@@ -2,6 +2,8 @@ package com.cyksj.mapper.vip;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.VipOrderDon;
+import com.cyksj.model.views.ChannelPopularizeView;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 项目名: yhlxj2
@@ -10,4 +12,5 @@ import com.cyksj.model.entity.VipOrderDon;
  * 创建时间:2025/5/13 11:05
  */
 public interface VipOrderDonMapper extends BaseMapper<VipOrderDon> {
+	ChannelPopularizeView countPopularizeOrderDetail(@Param("popularizeId") Long popularizeId, @Param("goodsId") Long goodsId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/views/ChannelPopularizeDetailView.java

@@ -17,7 +17,7 @@ import java.math.BigDecimal;
         " left join goods_don g on g.id = o.goods_id " +
         " left join order_don o1 on o1.`status` != 'close' and o.id = o1.id " +
         " left join order_don o2 on o2.`status` = 'refund' and o.id = o2.id "
-        ,where = ":time: "
+        ,where = "1 = 1 :time: "
         ,groupBy = "o.goods_id,o.popularize_id"
 )
 public class ChannelPopularizeDetailView {

+ 59 - 0
netflix-dao/src/main/java/com/cyksj/model/views/VipOrderDonPopularizeView.java

@@ -0,0 +1,59 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: VipOrderDonPopularizeView
+ * 创建者: JavaZou
+ * 创建时间:2025/6/3 15:10
+ */
+@Getter
+@Setter
+@SearchBean(tables = "vip_order_don o left join goods_don g on g.id = o.goods_id",
+		where = "o.status not in ('close','noPayment') :time:",
+		groupBy = "o.goods_id,o.popularize_id")
+public class VipOrderDonPopularizeView {
+	@DbField("o.popularize_id")
+	private Long popularizeId;
+	/**
+	 * 平台名称
+	 */
+	@DbField("g.title")
+	private String goodsName;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.type")
+	private Integer goodsDonType;
+
+	/**
+	 * 订单数
+	 */
+	@DbField("count(if(o.status != 'refund',1,NULL))")
+	private Integer orderCount;
+
+	/**
+	 * 订单金额
+	 */
+	@DbField("IFNULL(sum(o.money),0)")
+	private BigDecimal orderMoney;
+
+	/**
+	 * 退款数
+	 */
+	@DbField("count(if(o.status = 'refund',1,NULL))")
+	private Integer refundCount;
+
+	/**
+	 * 退款金额
+	 */
+	@DbField("IFNULL(sum(o.refund_money),0)")
+	private BigDecimal refundMoney;
+}

+ 38 - 0
netflix-dao/src/main/resources/mapper/VipOrderDonMapper.xml

@@ -0,0 +1,38 @@
+<?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.cyksj.mapper.vip.VipOrderDonMapper">
+
+
+    <select id="countPopularizeOrderDetail" resultType="com.cyksj.model.views.ChannelPopularizeView">
+        select *
+        from (select count(*) as orderCount, ifnull(sum(money),0) as orderMoney
+        from vip_order_don
+        where popularize_id = #{popularizeId}
+        <if test="startTime != null and startTime != ''">
+            and created_time >= #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and created_time &lt; #{endTime}
+        </if>
+        <if test="goodsId != null">
+            and goods_id = #{goodsId}
+        </if>
+        and status not in ('close', 'noPayment')) s1
+        ,
+        (select count(*) as refundCount, ifnull(sum(money),0) as refundMoney
+        from vip_order_don
+        where popularize_id = #{popularizeId}
+        <if test="startTime != null and startTime != ''">
+            and created_time >= #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            and created_time &lt; #{endTime}
+        </if>
+        <if test="goodsId != null">
+            and goods_id = #{goodsId}
+        </if>
+        and status = 'refund')
+        s2
+    </select>
+</mapper>

+ 19 - 1
netflix-web/src/main/java/com/cyksj/web/controller/manage/channel/CmsChannelPopularizeController.java

@@ -2,6 +2,7 @@ package com.cyksj.web.controller.manage.channel;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
@@ -13,9 +14,11 @@ import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.channel.ChannelPopularizeVisitMapper;
 import com.cyksj.mapper.corp.CorpCustomerAcquisitionLinkPopularizeMapper;
 import com.cyksj.mapper.sys.SysConfigMapper;
+import com.cyksj.mapper.vip.VipOrderDonMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.views.ChannelPopularizeDetailView;
 import com.cyksj.model.views.ChannelPopularizeView;
+import com.cyksj.model.views.VipOrderDonPopularizeView;
 import com.cyksj.service.mange.channel.ChannelPopularizeService;
 import com.cyksj.service.mange.cms.service.CmsUserService;
 import com.ejlchina.searcher.BeanSearcher;
@@ -50,6 +53,8 @@ public class CmsChannelPopularizeController {
 
     private final OrderDonMapper orderDonMapper;
 
+    private final VipOrderDonMapper vipOrderDonMapper;
+
     private final ChannelPopularizeVisitMapper visitMapper;
 
     private final CorpCustomerAcquisitionLinkPopularizeMapper acquisitionLinkPopularizeMapper;
@@ -103,6 +108,14 @@ public class CmsChannelPopularizeController {
             data.setOrderMoney(channelPopularizeView.getOrderMoney());
             data.setRefundCount(channelPopularizeView.getRefundCount());
             data.setRefundMoney(channelPopularizeView.getRefundMoney());
+
+            //AI会员订单数据
+            ChannelPopularizeView vipView = vipOrderDonMapper.countPopularizeOrderDetail(data.getId(), goodsId, startTime, endTime);
+            data.setOrderCount(data.getOrderCount() + vipView.getOrderCount());
+            data.setOrderMoney(data.getOrderMoney().add(vipView.getOrderMoney()));
+            data.setRefundCount(data.getRefundCount() + vipView.getRefundCount());
+            data.setRefundMoney(data.getRefundMoney().add(vipView.getRefundMoney()));
+
             Integer visitCount = visitMapper.selectCount(Wrappers.lambdaQuery(ChannelPopularizeVisit.class)
                     .eq(ChannelPopularizeVisit::getPopularizeId, data.getId())
                     .ge(StrUtil.isNotEmpty(startTime), ChannelPopularizeVisit::getCreatedTime, startTime)
@@ -123,7 +136,7 @@ public class CmsChannelPopularizeController {
     public Result<List<ChannelPopularizeDetailView>> getById(@PathVariable Long id, String startTime, String endTime){
         String timeSql = StringUtils.EMPTY;
         if(StringUtils.isNotBlank(startTime)){
-            timeSql += " o.created_time >= '" + startTime + "'";
+            timeSql += " and o.created_time >= '" + startTime + "'";
         }
         if(StringUtils.isNotBlank(endTime)){
             timeSql += " and o.created_time <= '" + endTime + "'";
@@ -134,6 +147,11 @@ public class CmsChannelPopularizeController {
                         .put("time", timeSql)
                         .orderBy(ChannelPopularizeDetailView::getGoodsId).asc()
                         .build());
+        //银河AI会员订单 单独查询
+        VipOrderDonPopularizeView view = beanSearcher.searchFirst(VipOrderDonPopularizeView.class, MapUtils.builder().field(VipOrderDonPopularizeView::getPopularizeId, id).put("time", timeSql).build());
+        ChannelPopularizeDetailView vipOrderDonPopularizeView = new ChannelPopularizeDetailView();
+        BeanUtil.copyProperties(view, vipOrderDonPopularizeView);
+        result.add(vipOrderDonPopularizeView);
         return GatewayResponse.SUCCESS.newBuilder().toResult(result);
     }