Просмотр исходного кода

fix 个人分销详情折线图;后台平台订单统计折线图

zoujiajian 3 лет назад
Родитель
Сommit
718af806e3

+ 3 - 7
netflix-dao/src/main/java/com/cyksj/model/excel/ExcelRealGoodsOrderData.java

@@ -18,13 +18,13 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(SELECT @i:=0) AS tableNo,order_don o left join goods_don_sku sku on o.sku_id = sku.id " +
+@SearchBean(tables = "order_don o left join goods_don_sku sku on o.sku_id = sku.id " +
 		"left join goods_don g on g.id = sku.goods_id " +
 		"left join user u on o.user_id = u.id " +
 		"left join groups_relation gr on gr.id = o.relation_id " +
 		"left join channel_popularize cp on o.popularize_id = cp.id " +
-		"left join channel c on c.id = cp.channel_id"
-)
+		"left join channel c on c.id = cp.channel_id " +
+		"left join order_don_transport odt on odt.order_id = o.id")
 public class ExcelRealGoodsOrderData {
 
 	@DbField("c.id")
@@ -95,10 +95,6 @@ public class ExcelRealGoodsOrderData {
 	@ExcelIgnore
 	private String exCode;
 
-	@ExcelProperty("序号")
-	@DbField("(@i:=@i+1) AS '序号'")
-	private Long id;
-
 	/**
 	 * 收货人
 	 */

+ 40 - 0
netflix-dao/src/main/java/com/cyksj/model/views/PersonDistributeBrokenLineView.java

@@ -0,0 +1,40 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: PersonDistributeBrokenLineView
+ *创建者: JavaZou
+ *创建时间:2023/3/8 14:40
+ */
+@Getter
+@Setter
+@SearchBean(tables = "distribute_waiting_send_points dw left join order_don od on od.id = dw.order_id"
+		, where = ":userId: and od.is_distribute is true"
+		, groupBy = "od.goods_id,date_format(od.created_time,'%Y-%m-%d')")
+public class PersonDistributeBrokenLineView {
+	@DbField("od.goods_id")
+	private Long goodsId;
+
+	/**
+	 * 平台名称
+	 */
+	@DbField("select title from goods_don where id = od.goods_id")
+	private String goodsTitle;
+
+	/**
+	 * 当前日期订单数
+	 */
+	@DbField("count(od.id)")
+	private Integer orderNum;
+
+	/**
+	 * 日期
+	 */
+	@DbField("date_format(od.created_time,'%Y-%m-%d')")
+	private String date;
+}

+ 42 - 0
netflix-dao/src/main/java/com/cyksj/model/views/PlatOrderDonBrokenLineView.java

@@ -0,0 +1,42 @@
+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;
+
+/*
+ *项目名: netflix
+ *文件名: PlatOrderDonBrokenLineView
+ *创建者: JavaZou
+ *创建时间:2023/3/8 15:22
+ */
+@Getter
+@Setter
+@SearchBean(tables = "order_don od",
+		where = ":status:"
+		, groupBy = "od.goods_id,date_format(od.created_time,'%Y-%m-%d')")
+public class PlatOrderDonBrokenLineView {
+	@DbField("od.goods_id")
+	private Long goodsId;
+
+	/**
+	 * 平台名称
+	 */
+	@DbField("select title from goods_don where id = od.goods_id")
+	private String goodsTitle;
+
+	/**
+	 * 当前日期订单数
+	 */
+	@DbField("cast(od.money/100 as decimal(10,2)")
+	private BigDecimal money;
+
+	/**
+	 * 日期
+	 */
+	@DbField("date_format(od.created_time,'%Y-%m-%d')")
+	private String date;
+}

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/manage/CmsOrderController.java

@@ -142,7 +142,7 @@ public class CmsOrderController {
 	@GetMapping("/export/realGoods")
 	public void exportRealGoods(HttpServletResponse response) {
 		List<ExcelRealGoodsOrderData> list = beanSearcher.searchAll(ExcelRealGoodsOrderData.class, MapUtils.flatBuilder(request.getParameterMap())
-				.field(ExcelOrderDonData::getType, Constant.realGoodsType).op(Operator.InList)
+				.field(ExcelOrderDonData::getGoodsDonType, Constant.realGoodsType).op(Operator.InList)
 				.build());
 		list.forEach(data -> {
 			data.setPayType("寄付现结");
@@ -152,7 +152,7 @@ public class CmsOrderController {
 				data.setRealGoodName("银河潮玩");
 			}
 		});
-		EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelOrderDonData.class, list, "实物订单列表", "实物订单列表", ExcelTypeEnum.XLSX, null);
+		EasyExcelUtils.createExcelStreamMutilByEasyExcel(response, ExcelRealGoodsOrderData.class, list, "实物订单列表", "实物订单列表", ExcelTypeEnum.XLSX, null);
 	}
 
 	@PutMapping("/update/status")

+ 19 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/statistics/StatisticsDataController.java

@@ -41,6 +41,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -379,4 +380,22 @@ public class StatisticsDataController {
 		BackgroundDataView views = statisticsDataService.getTitleData();
 		return GatewayResponse.SUCCESS.newBuilder().toResult(views);
 	}
+
+	/**
+	 * 获取每日平台订单折线数据
+	 */
+	@GetMapping("/get/plat/brokenLine")
+	public Result<Map<Long, List<PlatOrderDonBrokenLineView>>> getPlatBrokenLine(Date firstDate) {
+		if (firstDate == null) {
+			firstDate = DateUtil.beginOfWeek(DateTime.now());
+		}
+		String date = DateUtil.format(firstDate, "yyyy-MM-dd");
+		List<PlatOrderDonBrokenLineView> views = beanSearcher.searchAll(PlatOrderDonBrokenLineView.class, MapUtils.builder()
+				.field(PersonDistributeBrokenLineView::getDate, date).op(Operator.GreaterEqual)
+				.put("status", String.format("od.status not in %s", Constant.noOrderAllStatus))
+				.orderBy(PersonDistributeBrokenLineView::getDate).asc()
+				.build());
+		Map<Long, List<PlatOrderDonBrokenLineView>> goodsMap = views.stream().collect(Collectors.groupingBy(PlatOrderDonBrokenLineView::getGoodsId));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsMap);
+	}
 }

+ 24 - 4
netflix-web/src/main/java/com/cyksj/web/controller/user/DistributePopularizeController.java

@@ -20,10 +20,7 @@ import com.cyksj.mapper.manage.distribute.DistributeWaitingSendPointsMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.request.ApplyMoneyReq;
-import com.cyksj.model.views.DistributeMoneyApplyView;
-import com.cyksj.model.views.DistributePopularizeOrdersView;
-import com.cyksj.model.views.DistributePopularizeView;
-import com.cyksj.model.views.UserDistributeView;
+import com.cyksj.model.views.*;
 import com.cyksj.web.util.StpUserUtil;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -36,8 +33,11 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /*
  *项目名: netflix
@@ -141,6 +141,26 @@ public class DistributePopularizeController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(distributePopularizeView);
 	}
 
+	/**
+	 * 个人推广用户每日订单情况折线图
+	 */
+	@GetMapping("/get/order/brokenLine")
+	public Result<Map<Long, List<PersonDistributeBrokenLineView>>> getPersonDistributeBrokenLineView(Date firstDate) {
+		Long userId = StpUserUtil.getLoginIdAsLong();
+		if (firstDate == null) {
+			firstDate = DateUtil.beginOfWeek(DateTime.now());
+		}
+		String date = DateUtil.format(firstDate, "yyyy-MM-dd");
+		List<PersonDistributeBrokenLineView> views = beanSearcher.searchAll(PersonDistributeBrokenLineView.class, MapUtils.builder()
+				.field(PersonDistributeBrokenLineView::getDate, date).op(Operator.GreaterEqual)
+				.put("userId", String.format("dw.shared_id = %s", userId))
+				.orderBy(PersonDistributeBrokenLineView::getDate).asc()
+				.build());
+		Map<Long, List<PersonDistributeBrokenLineView>> goodsMap = views.stream().collect(Collectors.groupingBy(PersonDistributeBrokenLineView::getGoodsId));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsMap);
+	}
+
+
 	/**
 	 * 提现
 	 */